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).