Szinkronizálási objektumok
A szinkronizálási objektum olyan objektum, amelynek fogópontja megadható a várakozási függvények egyikében, több szál végrehajtásának koordinálásához. Egynél több folyamat rendelkezhet ugyanahhoz a szinkronizálási objektumhoz tartozó fogópontokkal, ami lehetővé teszi a folyamatok közötti szinkronizálást.
A következő objektumtípusok kizárólag szinkronizáláshoz érhetők el.
Típus | Leírás |
---|---|
Esemény | Értesíti egy vagy több várakozó szálat, hogy esemény történt. További információ: Event Objects. |
Mutex | Egyszerre csak egy szál lehet a tulajdonosa, ami lehetővé teszi, hogy a szálak kölcsönösen kizárják a megosztott erőforrásokhoz való hozzáférést. További információ: Mutex Objects. |
Szemafor | Nulla és néhány maximális érték közötti számot tart fenn, korlátozva a megosztott erőforráshoz egyidejűleg hozzáférő szálak számát. További információ: Semaphore Objects. |
Várakozási időmérő | Egy vagy több várakozási szál értesítése arról, hogy egy adott időpont elérkezett. További információ: Waitable Timer Objects. |
Bár más célokra is elérhető, a szinkronizáláshoz az alábbi objektumok is használhatók.
Tárgy | Leírás |
---|---|
Változásértesítés | A FindFirstChangeNotification függvény által létrehozott állapot jelzésre van állítva, ha egy adott típusú változás egy megadott könyvtárban vagy könyvtárfán belül történik. További információ: Címtárváltozási értesítések beszerzése. |
Konzolbemenet | Konzol létrehozásakor jön létre. A CreateFile függvény a CONIN$ megadásakor vagy a GetStdHandle függvény által visszaadott leírót adja vissza. Az állapot jelzésre van állítva, ha a konzol bemeneti pufferében olvasatlan bemenet van, és a bemeneti puffer üres állapotában nincs aláírva. További információ a konzolokról: Character-Mode Alkalmazások |
Foglalkozás | A CreateJobObject függvény meghívásával hozható létre. A feladatobjektum állapota akkor lesz jelezve, ha az összes folyamat leáll, mert túllépte a megadott feladatvégi időkorlátot. További információ a feladatobjektumokról: Feladatobjektumok. |
Memóriaerőforrás-értesítés | A CreateMemoryResourceNotification függvény hozta létre. Az állapot jelzésre van állítva, ha egy adott típusú változás történik a fizikai memóriában. További információ a memóriáról: Memóriakezelési. |
Folyamat | A CreateProcess függvény meghívásával hozható létre. A folyamat futása közben az állapota nem aláírásra van állítva, és a folyamat leállásakor jelezve van. További információ a folyamatokról: Folyamatok és szálak. |
Fonál | Új szál létrehozásakor a CreateProcess, CreateThreadvagy CreateRemoteThread függvény meghívásával hozható létre. Az állapota a szál futása közben nem hozzárendelt értékre van állítva, és a szál leállásakor jelezve van. További információ a szálakról: Folyamatok és szálak. |
Bizonyos esetekben egy fájl, névvel ellátott cső vagy kommunikációs eszköz is használható szinkronizálási objektumként; azonban az e célra való használatukat elriasztják. Ehelyett használjon aszinkron I/O-t, és várjon a ÁTFEDÉSBEN lévő struktúrában beállított eseményobjektumra. Biztonságosabb az eseményobjektum használata, mert a keveredés akkor fordulhat elő, ha ugyanazon a fájlon, elnevezett csőn vagy kommunikációs eszközön egyszerre több egymást átfedő műveletet hajtanak végre. Ebben a helyzetben nem lehet tudni, hogy melyik művelet okozta az objektum állapotának jelzését.
A fájlokon, elnevezett csöveken vagy kommunikáción végzett I/O-műveletekről további információt a Szinkronizálás és átfedésben lévő bemeneti és kimeneticímű témakörben talál.