Sdílet prostřednictvím


Objekty synchronizace

Objekt synchronizace je objekt, jehož popisovač lze zadat v některé z čekací funkce ke koordinaci provádění více vláken. Více než jeden proces může mít popisovač stejného objektu synchronizace, což umožňuje synchronizaci meziprocesů.

Následující typy objektů jsou poskytovány výhradně pro synchronizaci.

Typ Popis
Událost Upozorní jedno nebo více čekacích vláken, že došlo k události. Další informace naleznete v tématu Objekty událostí.
Mutex Může být vlastněno pouze jedním vláknem najednou, což umožňuje podprocesům koordinovat vzájemně se vylučující přístup ke sdílenému prostředku. Další informace naleznete v tématu Objekty Mutex.
Semafor Udržuje počet mezi nulou a určitou maximální hodnotou a omezuje počet vláken, která současně přistupují ke sdílenému prostředku. Další informace naleznete v tématu Objekty semaphore.
Čekaný časovač Upozorní jedno nebo více čekacích vláken, že přišla zadaná doba. Další informace naleznete v tématu objekty časovače s možností čekání.

 

I když jsou k dispozici pro jiné použití, lze k synchronizaci použít také následující objekty.

Objekt Popis
Oznámení o změně Vytvořený funkcí FindFirstChangeNotification je jeho stav nastaven tak, aby signalizoval, když se v zadaném adresáři nebo adresářovém stromu vyskytuje zadaný typ změny. Další informace naleznete v tématu Získávání oznámení o změnách adresářů.
Vstup konzoly Vytvořeno při vytvoření konzoly. Popisovač vstupu konzoly je vrácen funkcí CreateFile, pokud je zadán CONIN$ nebo funkcí GetStdHandle. Jeho stav je nastaven tak, aby signalizoval, když je vstup nepřečtený ve vstupní vyrovnávací paměti konzoly a je nastaven na nepřiřazené, pokud je vstupní vyrovnávací paměť prázdná. Další informace o konzolách najdete v tématu Character-Mode Applications
Práce Vytvořeno voláním CreateJobObject funkce. Stav objektu úlohy je nastaven tak, aby signalizoval, když jsou všechny jeho procesy ukončeny, protože byl překročen zadaný časový limit ukončení úlohy. Další informace o objektech úloh naleznete v tématu Objekty úloh.
Oznámení o prostředku paměti Vytvořil CreateMemoryResourceNotification funkce. Jeho stav je nastaven tak, aby signalizoval, když se v rámci fyzické paměti vyskytuje zadaný typ změny. Další informace o paměti naleznete v tématu Správa paměti.
Proces Vytvořeno voláním CreateProcess funkce. Jeho stav je nastaven na nepřiřazené, když je proces spuštěný, a je nastaven tak, aby signalizoval při ukončení procesu. Další informace o procesech naleznete v tématu Procesy a vlákna.
Vlákno Vytvořeno při vytvoření nového vlákna voláním CreateProcess, CreateThreadnebo CreateRemoteThread funkce. Jeho stav je nastaven na nepřiřazené, když je vlákno spuštěno, a je nastaven na signalizovat při ukončení vlákna. Další informace o vláknech naleznete v tématu Procesy a vlákna.

 

Za některých okolností můžete jako synchronizační objekt použít také soubor, pojmenovaný kanál nebo komunikační zařízení; jejich použití pro tento účel se však nedoporučuje. Místo toho použijte asynchronní vstupně-výstupní operace a počkejte na objekt události nastavený ve struktuře PŘEKRÝVAJÍCÍ se. Je bezpečnější použít objekt události kvůli nejasnostem, ke kterým může dojít, když se na stejném souboru, pojmenovaném kanálu nebo komunikačním zařízení provádí více souběžných překrývajících se operací. V této situaci neexistuje způsob, jak zjistit, která operace způsobila signál stavu objektu.

Další informace o vstupně-výstupních operacích se soubory, pojmenovanými kanály nebo komunikacích najdete v tématu Synchronizace a překrývající se vstupní a výstupní.