Sdílet prostřednictvím


Objekty událostí (synchronizace)

Objekt události je synchronizační objekt, jehož stav lze explicitně nastavit tak, aby signalizoval pomocí funkce SetEvent. Následuje dva typy objektu události.

Objekt Popis
Událost ručního resetování Objekt události, jehož stav zůstává signalován, dokud není explicitně resetován ResetEvent funkce. Během signálu lze uvolnit libovolný počet čekacích vláken nebo vláken, které následně určují stejný objekt události v některé z čekací funkce.
Událost automatického resetování Objekt události, jehož stav zůstává signalován, dokud nebude vydáno jedno čekající vlákno, kdy systém automaticky nastaví stav na nepřiřazené. Pokud nečekají žádná vlákna, stav objektu události zůstane signalován. Pokud čeká více vláken, vybere se čekající vlákno. Nepředpokládejte pořadí fiFO (first-in). Externí události, jako jsou apcs v režimu jádra, můžou změnit pořadí čekání.

 

Objekt události je užitečný při odesílání signálu do vlákna, které indikuje, že došlo k určité události. Například v překrývajících se vstupech a výstupech systém nastaví zadaný objekt události na signalovaný stav při dokončení překrývající se operace. Jedno vlákno může určit různé objekty událostí v několika souběžných překrývajících se operacích a pak použít jednu z více objektů čekací funkce čekat na stav jednoho z objektů událostí, které se mají signalizovat.

Vlákno používá k vytvoření objektu události funkci CreateEvent nebo CreateEventEx. Vlákno pro vytváření určuje počáteční stav objektu a zda se jedná o objekt události ručního resetování nebo automatického resetování. Vlákno pro vytváření může také zadat název objektu události. Vlákna v jiných procesech mohou otevřít popisovač existujícího objektu události zadáním jeho názvu ve volání OpenEvent funkce. Další informace o názvech objektů mutex, event, semaphore a časovače naleznete v tématu Synchronizace interprocesů.

používání objektů událostí