Windows 之等待函数

WaitForSingleObject 函数用来等待一个内核对象变为有信号状态:
DWORD WaitForSingleObject(
HANDLE hObject, //指明一个内核对象的句柄
DWORD dwMilliseconds); //等待时间 (ms,可以指定为无限大,如果为0 表示 函数根据测试同步对象的状态并立即返回

返回值:
WAIT_OBJECT_0:内核状态处于已通知状态,期待的状态
WAIT_TIMEOUT:超时退出。
WAIT_FAILED:出错退出。需要使用GetLastErr.

WaitFor Multiple Object 函数用来等待多个内核对象变为有信号状态:
DWORD  WaitForMultipleObject(  
DWORD   nCount,    //表示lphandles数组的元素个数  
CONST HANDLE   *lphandles,   //指向一个有对象handles组成的数组
BOOL   bWaitAll,             //true,则表示所有的handles都必须激发,此函数才得以返回,否则,此函数将在任何一个handle激发时就返回
  DWORD  dwMilliseconds     //等待时间 (超时返回,可为0,立即返回,INFINITE表示无穷等待)
);

DWORD WaitForMultipleObjectsEx
DWORD nCount, // number of handles in array (等待的对象,对象句柄的最大数量为64,参数不能为0)  
CONST HANDLE *lphandles , // object-handle array (对象处理数组)  
BOOL bWaitAll, // wait option (True:函数返回时所有对象的状态被设置为“有信号状态”; FLASE:该函数返回的任何一个对象的状态被设置为“有新号状态”,此时返回值表示的是对象返回的列表下标)  
DWORD dwMilliseconds, // time-out interval  
BOOL bAlertable // alertable option (如果此参数为TRUE,线程处于等待状态,系统队列时,该函数返回一个I / O完成例程或APC,线程运行的例行程序或功能。否则,该函数不返回,不执行完成例程或APC功能。) );

返回值:
WAIT_OBJECT_0:状态处于发信号的状态。最合理的结束方式。
WAIT_TIMEOUT:超时退出。
WAIT_ABANDONED:针对Mutex对象,就是在owner线程退出之前也没有释放Mutex。
WAIT_FAILED:出错退出。需要使用GetLastErr.

WAIT_OBJECT_0 to (WAIT_OBJECT_0 + nCount – 1)
如果 wait option是TRUE,返回WAIT_OBJECT_0表示所有句柄都发了信号;
如果 wait option是FLASE,返回什么就是第几个句柄发了信号。

WAIT_ABANDONED_0 to (WAIT_ABANDONED_0 + nCount – 1)
如果 wait option是TRUE,返回值WAIT_ABANDONED_0表示所有的线程发信号,至少一个线程退出;
如果 wait optionll是TRUE,至少一个线程退出,句柄就是返回值指的那个。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值