Dela via


Händelseobjekt (synkronisering)

Ett händelseobjekt är ett synkroniseringsobjekt vars tillstånd uttryckligen kan anges till signalerat med hjälp av funktionen SetEvent. Följande är de två typerna av händelseobjekt.

Objekt Beskrivning
Händelse för manuell återställning Ett händelseobjekt vars tillstånd förblir signalerat tills det uttryckligen återställs till nonsignaled av funktionen ResetEvent. Även om det signaleras kan valfritt antal väntande trådar eller trådar som senare anger samma händelseobjekt i någon av väntefunktionerna, släppas.
Automatisk återställningshändelse Ett händelseobjekt vars tillstånd förblir signalerat tills en enda väntande tråd släpps, då systemet automatiskt anger tillståndet till icke-signalerat. Om inga trådar väntar förblir händelseobjektets tillstånd signalerat. Om fler än en tråd väntar väljs en väntande tråd. Anta inte en fifo-order (first-in, first-out). Externa händelser, till exempel API:er i kernelläge, kan ändra vänteordningen.

 

Händelseobjektet är användbart när du skickar en signal till en tråd som anger att en viss händelse har inträffat. I överlappande indata och utdata anger systemet till exempel ett angivet händelseobjekt till det signalerade tillståndet när överlappningen har slutförts. En enda tråd kan ange olika händelseobjekt i flera samtidiga överlappande åtgärder och sedan använda en av väntefunktioner för flera objekt för att vänta tills tillståndet för något av händelseobjekten ska signaleras.

En tråd använder funktionen CreateEvent eller CreateEventEx för att skapa ett händelseobjekt. Den skapande tråden anger objektets ursprungliga tillstånd och om det är ett händelseobjekt för manuell återställning eller automatisk återställning. Den skapande tråden kan också ange ett namn för händelseobjektet. Trådar i andra processer kan öppna en referens till ett befintligt händelseobjekt genom att ange dess namn i ett anrop till funktionen OpenEvent. Mer information om namn på mutex-, händelse-, semafor- och timerobjekt finns i Interprocess Synchronization.

använda händelseobjekt