Megosztás a következőn keresztül:


Várakozási lánc bejárása

A várakozási lánc bejárása (WCT) lehetővé teszi, hogy a hibakeresők diagnosztizálják az alkalmazások lefagyásait és holtpontjait.

A várakozási lánc a szálak és szinkronizálási objektumok váltakozó sorozata, ahol minden szál a következő objektumra vár. Az alábbi objektumok viszont a lánc későbbi szálának tulajdonában lesznek.

A szál attól az időponttól kezdve várja a szinkronizálási objektumot, amikor a szál az objektumot kéri, amíg be nem szerzi. Ez a zárolási egy szál tulajdonában van attól az időponttól kezdve, amíg a szál fel nem oldja azt. Más szóval, ha az 1. szál a 2. szál tulajdonában lévő zárolásra vár, az 1. szál vár a 2. szálra.

A WCT a következő szinkronizálási primitíveket támogatja:

Egy vagy több szál várakozási láncának lekéréséhez hozzon létre egy WCT-munkamenetet az OpenThreadWaitChainSession és GetThreadWaitChain függvények használatával. A WCT-munkameneteket HWCTtípusú fogópont jelöli.

A munkamenetek lehetnek szinkronok vagy aszinkronok

Nem szakíthatja meg a szinkron munkameneteket, és nem tilthatja le a hívó szálat, amíg be nem kéri a várakozási láncot.

Az aszinkron munkamenetek nem tiltják le a hívó szálat, és az alkalmazás megszakíthatja a CloseThreadWaitChainSession függvénnyel. Az aszinkron műveletek eredményei az alkalmazás által biztosított WaitChainCallback visszahívási függvényen keresztül érhetők el.

Az aszinkron munkamenetek esetében a hívó a GetThreadWaitChain segítségével megadhatja a környezeti adatstruktúrára mutató mutatót. Ugyanezt a mutatót továbbítja a WaitChainCallback visszahívási függvénynek.

A környezeti adatstruktúra felhasználó által definiált és a WCT számára átlátszatlan. A környezeti adatstruktúrát az alkalmazás használhatja a WCT-lekérdezések és a visszahívási függvények közötti környezet kommunikációra. Általában egy eseménykezelőt ad át ezen a struktúrán keresztül, és a visszahívás végrehajtásakor a rendszer jelzi ezt az eseményt, és egy monitorozási szál tájékoztatja arról, hogy a lekérdezés befejeződött.

A várakozási lánc bejárására példa: WCT-használata.

Lásd még: