多线程boss / worker模型的C / C ++实现

时间:2011-02-10 14:07:05

标签: c++ c multithreading pthreads scheduling

我正在寻找多线程作业调度程序的C / C ++实现。 Boss线程(主函数)读取作业(例如,在while(1)循环中执行msgrcv)。

老板读取新工作,并根据目的地将工作分配给 相应的线程。工作线程执行作业。

我没有时间从头开始构建它,我正在寻找一个现成的解决方案。

更新:我不能使用提升。它必须在pthreads(Linux)

2 个答案:

答案 0 :(得分:3)

最简单的选择是让工作线程等待一个条件变量,当一个作业进入时它会被发出信号。

在检查条件时,您需要一个锁定的互斥锁。当您等待条件变量时,它会自动解锁相关的互斥锁,直到条件收到信号,此时您的线程将拥有它。你应该再次检查你的情况。

每个队列可以有一个条件变量,或者所有线程都有一个条件变量,这取决于你的缩放方式。

答案 1 :(得分:1)

听起来像是在线程池之后。可以找到一个here(它需要boost)。我确信谷歌搜索“线程池”或类似的东西将产生其他可能性。