C++提升线程重用线程

Any*_*orn 3 c++ multithreading boost

我想要完成这样的事情:

thread t; // create/initialize thread
t.launch(); // launch thread.
t.wait(); // wait
t.launch(); // relaunch the same thread
Run Code Online (Sandbox Code Playgroud)

如何使用boost线程来实现这样的东西?本质上,我需要持久的重新启动线程.

我想避免工作队列,因为在我的情况下实现有点困难

谢谢

Dan*_*ker 5

您只需使线程在循环中运行即可.它尝试从队列中获取"工作"单元,执行工作,然后返回队列.当队列为空时,它等待.

然后从另一个线程中,您可以将工作项插入队列,以便线程将它们执行.

再次阅读你的问题,你是说你希望你的主线程通知工作线程开始工作,但主线程必须立即开始等待工人完成?这意味着一次只运行一个线程.没有必要这样做.线程专为并发执行而设计.

假设这不是你想要的,那么我想知道什么比运行队列的简单工作线程更简单.线程正在工作或等待.所以你需要一些允许主人和工人之间进行通信的数据结构,这样工人可以等待工作项到达,主人可以发送工作项,这将唤醒工人,然后工作项完成,工人等待另一个.