1.等待一个线程的结束
DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);
参数
hHandle: 等待对象的 handle(代表一个核心对象)。在本例中,此为线程 handle。
dwMilliseconds :等待的最长时间。时间终了,即使 handle 尚未成为激发状态,此函数还是要返回。此值可以是 0
(代表立刻返回),也可以是 INFINITE 代表无穷等待。
返回值
如果函数失败,则传回WAIT_FAILED。这时候你可调用 GetLastError() 取得更多信息。此函数的成功有三个因素:
1. 等待的目标(核心对象)变成激发状态。这种情况下返回值将为WAIT_OBJECT_0。
2. 核心对象变成激发状态之前,等待时间终了。这种情况下返回值将为WAIT_TIMEOUT。
3. 如果一个拥有 mutex(互斥器)的线程结束前没有释放 mutex,则传回 WAIT_ABANDONED。
关于 time-out,有一个特别重要的用途,但很少被人注意。设定 time-out为 0,使你能够检查 handle 的状态并立刻返回,没有片刻停留。如果 handle已经备妥,那么这个函数会成功并传回 WAIT_OBJECT_0。否则,这个函数立刻返回并传回 WAIT_TIMEOUT。
WaitForSingleObject() 可以面对许多种 handles 工作,不一定要是本例所使用的线程 handle。事实上,Win32 中大部分以 HANDLE 表示的对象都能够作为 WaitForSingleObject() 的