WaitForMultipleObjects几乎可以等待所有的内核对象(Event、Mutex、Process、Thread、Semaphore)。
函数原型
DWORD WaitForMultipleObjects(
DWORD nCount,//句柄数组的数量
const HANDLE *lpHandles,//指向句柄数组的指针
BOOL fWaitAll,//等待标志位
DWORD dwMilliseconds//超时时间间隔
}
- 参数解析
- nCount句柄数量,最大值为MAXIMUM_WAIT_OBJECTS(64)
- *lpHandles,指向句柄数组的指针
- fWaitAll,等待标志位,TRUE表示等待所有对象发出信号。FALSE表示等待任一对象发出信号
- dwMilliseconds//超时时间间隔,0代表立即返回,INFINITE代表无限等待
- 函数返回值
DWORD:double word,每个word两个字节,DWORD四个字节
|返回值|含义|
|–|--|
|WAIT_ABANDONED_0|所有对象发出信号(一旦拥有它们的进程中止,就会发出信号)|
|WAIT_TIMEOUT|对象保持未发信号的状态,但超过规定的等待时间|
|WAIT_OBJECT_0|所有对象发出信号|
|WAIT_IO_COMPLETION|I/O操作完成,等待执行(适用于WaitForMultipleObjectsEx)|
3.示例
WAIT_OBJECT_0 + 5的返回结果意味着列表中的第5个对象发出了信号