WaitForMultipleObjects()是否重置所有自动重置事件?

jap*_*iss 6 windows events winapi multithreading asynchronous

我有一个等待几个自动重置事件的事件循环.这些事件都初始化为数组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...
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:如果事件1和2同时发生,循环将处理,WAIT_OBJECT_0 + 1因为它是第一个.但是当循环再次出现时,事件2是否仍会发出信号?还是会自动重置?

Ste*_*son 5

"......修改只发生在信号状态导致函数返回的对象或对象中......"

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

从一个雷蒙德陈的口中:

如果等待一个事件,则仅修改该事件.如果等待所有事件,则修改所有事件.这就是文档对"对象或对象"的意义.单数如果等待任何,复数如果等待所有.