关于线程的弱弱问题:如何等待线程返回结果?我在一个函数中开了几个线程来进行费时的操作,
然后等待这几个线程返回结果,全都得到结果后才退出函数,但是我是用下面这种方法等待bool finish = 判断是否全部线程都已经返回结果;
while(!finish)
{
  Sleep(500);
  finish = 判断是否全部线程都已经返回结果;
}
退出;但是线程不是马上就返回结果,这时程序程序很容易就会“没有响应”,用什么方法等待线程返回结果才能避免这种现象呢?

解决方案 »

  1.   

    你这样的是POLLING,耗费cup啊
    正如上面所说的用WaitForMultipleObjects(...)这个函数等待指定的线程结束
    想知道线程的返回结果可以用GetExitCodeThread(...)取得
      

  2.   

    第一步:在你的程序中设置一个事件(手动改变状态的,初始状态为无信号)。
    第二步:在你的线程的最后加一句SetEvent(hThreadExitEvent)。
    第三步:你的主线程使用WaitForSingleObject函数等待该事件的激发。
    说明:在你等待结束的线程结束之前会激发该事件,而你的主线程会在接收到该事件激发的消息后才会执行后面的代码,在等到这之前,主线程会堵塞在这里,什么也不做。
      

  3.   

    CreateEvent()查一下MSDN吧,现在我不太记得了。