参见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;

}
05-11 14:56