C ++提升线程重用线程

时间:2010-04-17 16:16:44

标签: c++ multithreading boost

我正在努力完成这样的事情:

thread t; // create/initialize thread
t.launch(); // launch thread.
t.wait(); // wait
t.launch(); // relaunch the same thread

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

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

由于

1 个答案:

答案 0 :(得分:5)

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

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

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

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