我有一个事件循环等待几个自动重置事件。 事件都被初始化为具有CreateEvent(NULL, false, false, NULL)
数组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是否会继续发出信号? 还是自动重置?
“…修改只发生在信号状态导致函数返回的对象或对象…”
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx
从一个Raymond Chen的口中:
如果等待一个事件,那么只有该事件被修改。 如果等待所有事件,则全部被修改。 这就是文档所指的“对象或对象”。 单数,如果等待,任何复数,如果等待所有。