如何使boost :: thread_group执行固定数量的并行线程

13 c++ multithreading boost boost-thread

这是创建thread_group并并行执行所有线程的代码:

boost::thread_group group;
for (int i = 0; i < 15; ++i)
    group.create_thread(aFunctionToExecute);
group.join_all();
Run Code Online (Sandbox Code Playgroud)

此代码将立即执行所有线程.我想要做的是并行执行除4个以外的所有操作.当on终止时,执行另一个,直到不再执行为止.

Jam*_*mes 3

另一种更有效的解决方案是让每个线程在完成时回调到主线程,并且主线程上的处理程序每​​次都可以启动一个新线程。这可以防止重复调用 timed_join,因为主线程在触发回调之前不会执行任何操作。