//调用WaitForSingleO bject() 并放置一个“线程核心对象”作为参数,将
//使线程#1 开始睡眠,直到线程#2 结束为止。就像Sleep() 函数一样,
//WaitForSingleObject() 也有一个参数用来指定最长的等待时间
//DWORD WaitForSingleObject(
// __in HANDLE hHandle,
// __in DWORD dwMilliseconds
// );
//参数
//hHandle 等待对象的handle(代表一个核心对象)。
//dwMilliseconds 等待的最长时间。时间终了,即使handle 尚未成为激发状态,此函数还是要返回。此值可以是0(代表立刻返回),也可以是INFINITE 代表无穷等待。
//返回值
//如果函数失败,则传回WAIT_FAILED。这时候你可调用GetLastError() 取
//得更多信息。此函数的成功有三个因素:
//1. 等待的目标(核心对象)变成激发状态。这种情况下返回值将为
//WAIT_OBJECT_0。
//2. 核心对象变成激发状态之前,等待时间终了。这种情况下返回值将为
//WAIT_TIMEOUT。
//3. 如果一个拥有mu tex(互斥器)的线程结束前没有释放mu tex,则传
//回WAIT_ ABANDONED。
获得一个线程对象的handle 之后,WaitForSingleObject() 要求操作系统让线程#1 睡觉,直到以下任何一种情况发生:
i 线程#2 结束
i dwMilliseconds 时间终了。该值系从函数调用后开始计算。
由于操作系统持续追踪线程#2,即使线程#