【发布时间】: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