Windows线程等待方法

时间:2009-05-01 14:38:42

标签: c++ multithreading

我正在创建一个线程类来封装windows线程方法。我正在尝试创建一个方法,使应用程序在退出应用程序之前等待线程完成。如果我使用while循环和布尔标志,它可以工作,但很明显它会刺激我的CPU使用,这只是不理想。

您将使用哪些方法等待线程的完成? (我不是在这里寻找代码,只是需要研究的领域)

1 个答案:

答案 0 :(得分:28)

使用CreateThread获取线程句柄后,将其传递给Win32 API WaitForSingleObject

WaitForSingleObject(threadhandle, INFINITE);

如果你不使用CreateThread(因为你使用另一个线程包),或者你的线程总是活着......

然后你仍然可以使用WaitForSingleObject。只需使用Win32 API CreateEvent创建一个事件,然后等待使用WaitForSingleObject设置事件。在您的主题结束时,使用SetEvent设置活动,您可以使用ResetEvent重置活动。

虽然大多数线程包都有自己的等待线程的方法。与boost::thread中一样,您可以使用.join()或boost::condition.