【问题标题】:boost::thread: notify when first thread in thread_group has finished?boost::thread: thread_group 中的第一个线程完成时通知?
【发布时间】:2011-04-10 23:54:33
【问题描述】:

我有一个boost::thread_group,我已使用thread_group 对其进行了初始化,

例如thread_group tg1;

并使用create_thread 填充。在使用create_thread 时,线程开始执行。

我的线程组中的各个线程可以在不同的时间完成执行。我知道如果目标是等待线程组中的所有线程完成执行,可以使用tg1.join_all()

但是,我最理想的做法是调用此函数,等待最近完成的线程,将其从组中删除并以适当的方式使用线程结果,然后再次调用该函数(它要么如果没有其他线程完成执行,则等待,否则它将立即返回下一个已完成执行的线程,就像常规的 join() 函数一样),直到组为空。

boost库中是否有函数可以返回先完成的线程的线程ID?

【问题讨论】:

  • 一个方法 thread_group::join_any() 会有所帮助。不幸的是,它不存在。

标签: c++ multithreading boost boost-thread


【解决方案1】:

您可以使用条件变量创建一个队列以等待。当任何线程完成时,它会将其结果(或对它们的引用或对线程本身的引用)放在此队列中,并发出条件信号。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 2015-04-04
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多