调用WaitForSingleObject()函数,并将“线程核心对象”作为参数,将使线程开始休眠。
- DWORD WINAPI WaitForSingleObject(
- __in HANDLE hHandle,
- __in DWORD dwMilliseconds
- );
hHandle等待对象的句柄
dwMilliseconds等待的时间,INFINITE表示无穷等待
如果失败,返回WAIT_FAILED
1.等待的目标(核心对象)变成激发状态,则函数将返回WAIT_OBJECT_0
2.核心对象变成激发状态前,等待时间终了,则函数返回WAIT_TIMEOUT
3.如果一个拥有mutex的线程结束前没有释放mutex,则函数返回WAIT_ABABDONED
WaitForMultipleObjects允许在同一时间等待一个以上的对象
- DWORD WINAPI WaitForMultipleObjects(
- __in DWORD nCount,
- __in const HANDLE* lpHandles,
- __in BOOL bWaitAll,
- __in DWORD dwMilliseconds
- );
1.如果因时间终了而返回,则返回值是WAIT_TIMEOUT
2.如果bWaitAll是true,则返回值是WAIT_OBJECT_0
3.如果bWaitAll是false,那么将返回值减去WAIT_OBJECT_0,就表示数组中哪个handle被激发了
4.如果你等待的对象中有任何muteses,那么返回值可能从WAIT_ABANDONED_0到WAIT_ABANDONED_0+nCount-1
5.如果函数失败,那么返回值是WAIT_FALIDED