我有30个可以并行执行的任务。
我为每个任务使用线程池。
但是父函数在所有任务完成之前不应该返回。
我需要一个线程同步句柄,当其计数达到0时会释放WaitOne。 类似于:
foo.StartWith(myTasks.Count);
foreach (var task in myTasks) {
ThreadPool.QueueUserWorkItem(state => { task(state); foo.Release(); });
}
foo.WaitOne();
Semaphore
似乎是正确的,只是不知道如何在这里应用它。