函数原型
DWORD WaitForMultipleObjects(
DWORD nCount,
CONST HANDLE *lpHandles,
BOOL fWaitAll,
DWORD dwMilliseconds
);
函数参数
nCount 句柄的数量 最大值为MAXIMUM_WAIT_OBJECTS(64)
HANDLE 句柄数组的指针
fWaitAll 等待的类型,如果为TRUE 则等待所有信号量有效在往下执行,FALSE 当有其中一个信号量有效时就向下执行
dwMilliseconds 要等候的毫秒数,超时后向执行。 如果为WSA_INFINITE 永不超时。如果没有信号量就会在这死等。
函数返回值
WAIT_ABANDONED_0:所有对象都发出消息,而且其中有一个或多个属于互斥体(一旦拥有它们的进程中止,就会发出信号)
WAIT_TIMEOUT:对象保持未发信号的状态,但规定的等待超时时间已经超过
WAIT_OBJECT_0:所有对象都发出信号
WAIT_IO_COMPLETION:(仅适用于WaitForMultipleObjectsEx)由于一个I/O完成操作已作好准备执行,所以造成了函数的返回
返回WAIT_FAILED则表示函数执行失败,会设置GetLastError
如bWaitAll为FALSE,那么返回结果相似,只是可能还会返回相对于WAIT_ABANDONED_0或WAIT_OBJECT_0的一个正偏移量,指出哪个对象是被抛弃还是发出信号。
使用举例