Windows线程等待方法

Sam*_*gan 13 c++ multithreading

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

你会用什么方法等待一个线程的完成?(我不是真的在这里寻找代码,只是需要研究的领域)

Bri*_*ndy 30

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

WaitForSingleObject(threadhandle, INFINITE);
Run Code Online (Sandbox Code Playgroud)

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

然后你仍然可以使用WaitForSingleObject.只需使用Win32 API CreateEvent创建一个事件,然后等待使用WaitForSingleObject设置事件.在线程结束时使用SetEvent设置事件,您可以使用ResetEvent重置事件.

大多数线程包虽然有自己的方式来等待一个线程.就像在boost :: thread中一样,你可以使用.join()或boost :: condition.

  • 好的,那么你可以使用我提到的事件方法. (2认同)