【发布时间】:2016-07-26 08:49:58
【问题描述】:
假设:我用自动重置事件填充了一个句柄数组,并将其传递给 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.
}
【问题讨论】:
标签: multithreading winapi events