我有一个等待几个自动重置事件的事件循环。
这些事件都已使用eventHandles_
初始化为数组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...
}
}
我的问题:如果事件1和2同时发生,循环将处理WAIT_OBJECT_0 + 1
因为它是第一个。但是当循环再次出现时,事件2是否仍会发出信号?还是会自动重置?
答案 0 :(得分:5)
“...仅对信号状态导致函数返回的对象或对象发生修改...”
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx
从一个Raymond Chen的口中发出:
如果等待一个事件,则仅修改该事件。如果等待 对于所有事件,然后所有事件都被修改。这就是文档 意思是“对象或对象”。单数如果等待任何,复数如果 等待-所有