是否WaitForMultipleObjects的()重置所有自动重置事件? [英] Does WaitForMultipleObjects() reset all auto-reset events?

查看:137
本文介绍了是否WaitForMultipleObjects的()重置所有自动重置事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个事件循环的等待几个自动重置事件。
这些事件都被初始化为数组 eventHandles _ CreateEvent(NULL,假的,假的,NULL)

I've got an event loop that's waiting on several auto-reset events. The events were all initialized into array eventHandles_ with 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信号?或者它得到自动复位?

My question: if event 1 and 2 occur simultaneously, the loop will process WAIT_OBJECT_0 + 1 because it's first. But will event 2 remain signaled when the loop comes around again? Or does it get reset automatically?

推荐答案

...修改只为对象发生或这些对象的信号状态导致函数返回......

"...modification occurs only for the object or objects whose signaled state caused the function to return..."

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

和从嘴里一<一href=\"http://stackoverflow.com/questions/22814435/will-waitformultipleobjects-modify-the-state-of-multiple-objects/22819089#comment34794743_22814435\">Raymond陈:

如果等待一个事件,那么只有该事件被修改。如果等待
  所有事件,那么所有被修改。这就是文档
  通过一个或多个对象的意思。如果奇异等待的,如果复数
  等待所有。

If waiting for one event, then only that event is modified. If waiting for all events, then all are modified. That's what the documentation means by "object or objects". Singular if wait-any, plural if wait-all.

这篇关于是否WaitForMultipleObjects的()重置所有自动重置事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆