WaitForMultipleObjects

功能:

进程在该函数处等待(即暂停在此处),直到被指定的其中一个或者全部信号触发  也或者超过了最长等待时间时,跳出该函数,继续向下执行代码

 

函数:

DWORD WaitForMultipleObjects(

              DWORD       nCount,

    const HANDLE      *lpHandles,

                   BOOL       bWaitAll,

               DWORD       dwMilliseconds

);

 

参数说明:

nCount

lpHandles指向的数组中对象句柄的数量。对象句柄的最大数量为MAXIMUM_WAIT_OBJECTS。此参数不能为零。

lpHandles

对象句柄数组。该数组可以包含不同类型对象的句柄。但是它可能不包含同一句柄的多个副本。

如果在等待仍未完成的情况下关闭了这些句柄之一,则该函数的行为未定义。

句柄必须具有SYNCHRONIZE访问权限。

bWaitAll

如果此参数为TRUE,则当信号lpHandles数组中所有对象的状态设置为已通知信号时,该函数将返回。如果为FALSE,则当任何一个对象的状态设置为已信号通知时,该函数将返回。在后一种情况下,返回值指示其状态导致函数返回的对象。

dwMilliseconds

超时间隔(以毫秒为单位)。如果指定了非零值,则函数将等待,直到发出指定对象的信号或间隔过去为止。如果dwMilliseconds为零,则如果未发出指定对象的信号,则函数不会进入等待状态;否则,函数将进入等待状态。它总是立即返回。如果dwMillisecondsINFINITE,则该函数仅在发出指定对象的信号时返回。

 

返回值说明

 

使用举例:

(1)使用该函数当做两个线程之间的标志位

首先建立两个事件

    HANDLE m_InPoolEvent;       //由A线程触发的事件
    HANDLE m_OutPoolEvent;    //由B线程触发的事件

    m_InPoolEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

    m_OutPoolEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

线程A等待线程B的标志位

    HANDLE hEvent;     //如果想使用两个事件做标志位,则HANDLE hEvent[2];   设置一个事件数组

    hEvent = m_OutPoolEvent;
    u32Result = WaitForMultipleObjects(1, &hEvent, FALSE, INFINITE);

线程B触发

    SetEvent(m_OutPoolEvent);

 

 

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值