我正在创建一个线程类来封装windows线程方法。我正在尝试创建一个方法,使应用程序在退出应用程序之前等待线程完成。如果我使用while循环和布尔标志,它可以工作,但很明显它会刺激我的CPU使用,这只是不理想。
您将使用哪些方法等待线程的完成? (我不是在这里寻找代码,只是需要研究的领域)
答案 0 :(得分:28)
使用CreateThread获取线程句柄后,将其传递给Win32 API WaitForSingleObject:
WaitForSingleObject(threadhandle, INFINITE);
如果你不使用CreateThread(因为你使用另一个线程包),或者你的线程总是活着......
然后你仍然可以使用WaitForSingleObject。只需使用Win32 API CreateEvent创建一个事件,然后等待使用WaitForSingleObject设置事件。在您的主题结束时,使用SetEvent设置活动,您可以使用ResetEvent重置活动。
虽然大多数线程包都有自己的等待线程的方法。与boost::thread中一样,您可以使用.join()或boost::condition.