boost :: thread:在thread_group中的第一个线程完成时通知?

时间:2011-04-10 23:54:33

标签: c++ multithreading boost boost-thread

我有一个boost::thread_group,我已使用thread_group初始化了

e.g。 thread_group tg1;

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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