【问题标题】:c++ queue mulithreading wait for jobs completedc++队列多线程等待作业完成
【发布时间】:2013-01-19 09:23:26
【问题描述】:

是否有一个 c++ 多线程库,其中有一个队列可以包含必须等待其他作业完成的作业。线程池正在处理队列中的所有作业。

我想编写一个多线程 c++ 程序来生成和使用放置在队列中的作业,只有其中一些作业只有在其他一些作业已经处理后才能处理。

类似于在 qsub(网格队列管理器)中,您可以将作业放入队列中,并且必须保持直到其他作业完成。

【问题讨论】:

  • then 功能怎么样?即,线程池中的每个作业都从线程池提供future,如果您想在特定作业完成时将新作业排入队列,您只需将then 附加到运行的future 上(谁在乎在哪里)当future 准备好时?然后它将“依赖作业”排入线程池。
  • 你做过任何研究吗? TBB、PPL、Boost Thread、std::packaged_task 和 std::future 等。
  • @Yakk 哪个(非标准?)实现提供了then?
  • 我的主要编程语言是 Java,我是 c++ 中的多线程新手(我有一些 Java 经验)。 Frome sehe 的帖子我收集到这种队列和多线程在 C++ 中是可能的。我将使用提到的库自己搜索教程。但是非常感谢任何好的教程链接。
  • 在依赖的作业结束时提交依赖作业?

标签: c++ multithreading queue jobs


【解决方案1】:

您可能想研究所谓的信号量。 http://en.wikipedia.org/wiki/Semaphore_(programming)

例如,您可以使用 Boost Threading 模块编写信号量。我希望这可以帮助您解决问题。

【讨论】:

    【解决方案2】:

    找到我要找的东西:

    在英特尔线程构建模块中实现的任务窃取: http://en.wikipedia.org/wiki/Intel_Threading_Building_Blocks

    【讨论】:

      【解决方案3】:

      查看 Herb Sutter 的这次演讲。他给出了一个 C++11 风格工作的实现。

      Herb Sutter - C++ Concurrency

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        相关资源
        最近更新 更多