D2000 OBJApi - Asynchrónne funkcie (správy)

Asynchrónne funkcie sú volané knižnicou ObjApi.dll počas behu klient procesu ako správy. Užívateľský proces musí definovať obslužné procedúry pre tieto typy správ:

  • správa NewObjectValue
    • správa signalizujúca zmenu hodnoty alebo stavu otvoreného objektu alebo potomka procesu.
  • správa NewDefinition
    • konfiguračná správa oznamujúca vznik nového potomka alebo zánik existujúceho potomka procesu. Po volaní funkcie SendChildren je užívateľskému procesu poslaná séria týchto správ definujúca všetkých jeho potomkov.

Pri návrhu obslužných procedúr je potrebné vziať do úvahy nasledujúce skutočnosti:

  • Funkcie slúžiace na obsluhu správ sú volané z ObjAPI asynchrónne. To znamená, že ak obslužné funkcie zdieľajú niektoré prostriedky s ostatnými časťami (threadmi) užívateľského procesu, je potrebné zabezpečiť vzájomnú výlučnosť pri prístupe k takýmto prostriedkom v réžii užívateľského procesu.
  • Správy sú týmto spôsobom spracovávané sériovo, za sebou, a kým nie je ukončená obsluha jednej správy (NewObjectValue alebo NewDefinition), druhá nemôže byť začatá. Z toho vyplýva potreba spracovávania správ s nezanedbateľnou dobou obsluhy samostatným threadom.
  • Obslužné procedúry nesmú používať tie funkcie ObjAPI, ktoré patria do kategórie synchrónne. V popise každej Výkonnej alebo Pomocnej funkcie je uvedené, či je táto synchrónna alebo asynchrónna. Synchrónne funkcie totiž používajú komunikačnú cestu, ktorá je v čase obsluhy asynchrónnych správ uzamknutá a pri ich volaní z obsluhy správ by došlo k uviaznutiu (deadlock).
Napíšte komentár