Дано: я заполняю массив дескрипторов событиями автоматического сброса и передаю его в WaitForMultipleObjects с bWaitAll = FALSE.
Из MSDN:
«Когда bWaitAll имеет значение FALSE, эта функция проверяет дескрипторы в массиве в порядке, начиная с индекса 0, пока не будет сигнализирован один из объектов. Если несколько объектов становятся сигнальными, функция возвращает индекс первого дескриптора в массиве, объект которого был сигнализирован. ”
Итак, теперь, если несколько объектов сигнализируют, я получу индекс первого. Должен ли я пройти через мой массив, чтобы увидеть, есть ли какие-либо другие сигналы?
Прямо сейчас у меня есть цикл, который выглядит следующим образом:
For ( ; ; )
{
WaitForMultipleObjects(…)
If (not failed)
Process object that called.
Remove the handle that signaled from the array.
Compact the arrary.
}