我想重用一组工作线程。每个工作线程执行独立工作,但它们必须作为协调团队开始和停止处理。我需要一个有效的方法让每个工作线程阻塞,直到主线程告诉他们所有去,并且主线程阻塞直到所有工作线程的有效方法是结束。
每个工作块只需要几十微秒,因此创建一组线程然后加入它们的通常方法都涉及太多的开销。
伪代码如下:
主线程:
create N threads
forever
prepare new independent work for each thread
tell all N threads to run their part
wait for all N threads to complete their work
use results
典型的工作线程:
forever
wait to run
do my work
indicate to main my work is complete
我的问题是如何最好地执行此信令和同步。我不询问如何分割工作或将工作移入或移出每个线程;足以说明线程没有互动。