参见:http://blog.csdn.net/xiaobai1593/article/details/6672193
1. 格式
DWORD WaitForSingleObject( HANDLE hHandle, DWORDdwMilliseconds);
有两个参数,分别是THandle和Timeout(毫秒单位)。
如果想要等待一条线程,那么你需要指定线程的Handle,以及相应的Timeout时间。当然,如果你想无限等待下去,Timeout参数可以指定系统常量INFINITE。
2. 使用对象
它可以等待如下几种类型的对象:
Event,Mutex,Semaphore,Process,Thread
3. 返回类型
有三种返回类型:
WAIT_OBJECT_0, 表示等待的对象有信号(对线程来说,表示执行结束);
WAIT_TIMEOUT, 表示等待指定时间内,对象一直没有信号(线程没执行完);
WAIT_ABANDONED 表示对象有信号,但还是不能执行 一般是因为未获取到锁或其他原因
示例:
//声明函数 创建线程 DWORD WINAPI FunProc( LPVOID lpParameter); void main() { HANDLE hThread; hThread=CreateThread(NULL,0,FunProc,NULL,0,NULL); DWORD dwRet=WaitForSingleObject(hThread, 1); //等待 hThread 线程结束 if(dwRet==WAIT_OBJECT_0) { printf("创建的线程执行结束\n"); } if(dwRet==WAIT_TIMEOUT) { printf("等待超时\n"); } if(dwRet==WAIT_ABANDONED) { printf("Abandoned\n"); } CloseHandle(hThread); } DWORD WINAPI FunProc( LPVOID lpParameter ) { int i=1; for(; i<1000; i++) { printf("%d ", i); if(! (i%10)) printf("\n"); } return 0; }