我想在thread_group
中的线程(立即)之后运行线程。我可以同时只使用4个线程,但我必须调用一个仿函数16次。在下面的代码中,如果t1
完成,我需要等待其他(t2
,t3
,t4
),但我想立即运行t5
。< / p>
boost::thread_group tg;
for (int i = 0; i < 16; i+=4){
tg.create_thread (boost::ref (*(something[i]))); // t1
tg.create_thread (boost::ref (*(something[i+1]))); // t2
tg.create_thread (boost::ref (*(something[i+2]))); // t3
tg.create_thread (boost::ref (*(something[i+3]))); // t4
tg.join_all ();
}
有可能吗?
修改 这是错误的问题。我需要重新设计我的代码,做我想做的事。
答案 0 :(得分:0)
使用boost :: asio :: io_service。
当您在io_service上发布所有16个任务时,线程全部执行io_service的run方法