windows - Gør WaitForMultipleObjects () nulstillet alle automatisk nulstillede hændelser?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en hændelsesløkke, der venter på flere automatisk nulstillingshændelser.
Begivenhederne blev alle initialiseret i array eventHandles\_ med CreateEvent(NULL, false, false, NULL).


while (true)
{
    DWORD waitResult = WaitForMultipleObjects(3, eventHandles\_, false, INFINITE);
    switch (waitResult)
    {
    case WAIT\_OBJECT\_0 + 0:
        //handle event...

    case WAIT\_OBJECT\_0 + 1:
        //handle event...

    case WAIT\_OBJECT\_0 + 2:
        //handle event...
    }
}


Mit spørgsmål: Hvis begivenhed 1 og 2 foregår samtidigt, vil sløjfen behandle WAIT\_OBJECT\_0 + 1 fordi den er først. Men vil begivenhed 2 forblive signaleret, når sløjfen kommer igen, eller bliver den nulstillet automatisk?

Bedste reference


'... Ændring sker kun for objektet eller genstande, hvis signalerede tilstand forårsagede funktionen at vende tilbage ...'


http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx[5]


Og fra munden af ​​en Raymond Chen:



  Hvis du venter på en begivenhed, ændres kun den pågældende begivenhed. Hvis du venter
  for alle begivenheder, så alle er ændret. Det er hvad dokumentationen
  betyder ved 'objekt eller objekter'. Singular hvis vent-nogen, flertal hvis
  vente-alle.