【问题标题】:C/C++ implementation of multithreaded boss/workers model多线程boss/workers模型的C/C++实现
【发布时间】:2011-02-10 14:07:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ c multithreading pthreads scheduling


    【解决方案1】:

    您最简单的选择是让工作线程等待一个条件变量,当有工作进入时会发出信号以供他们读取。

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

    您可以为每个队列设置一个条件变量,也可以为所有线程设置一个条件变量,这取决于您的扩展方式。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 抱歉,boost 不是一个选项
      • 你需要一个线程池是对的。如果您不能使用 boost,则不必使用该特定实现,但您可能会查看代码以了解它是如何完成的。
      猜你喜欢
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 2011-07-25
      相关资源
      最近更新 更多