调用WaitForSingleObject()函数,并将“线程核心对象”作为参数,将使线程开始休眠。

  1. DWORD WINAPI WaitForSingleObject( 
  2.   __in          HANDLE hHandle, 
  3.   __in          DWORD dwMilliseconds 
  4. ); 

hHandle等待对象的句柄

dwMilliseconds等待的时间,INFINITE表示无穷等待

如果失败,返回WAIT_FAILED

1.等待的目标(核心对象)变成激发状态,则函数将返回WAIT_OBJECT_0

2.核心对象变成激发状态前,等待时间终了,则函数返回WAIT_TIMEOUT

3.如果一个拥有mutex的线程结束前没有释放mutex,则函数返回WAIT_ABABDONED

 

WaitForMultipleObjects允许在同一时间等待一个以上的对象

  1. DWORD WINAPI WaitForMultipleObjects( 
  2.   __in          DWORD nCount, 
  3.   __in          const HANDLE* lpHandles, 
  4.   __in          BOOL bWaitAll, 
  5.   __in          DWORD dwMilliseconds 
  6. ); 

 

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