aks*_*hik 8 c# multithreading c#-4.0
我有一个主线程产生大约20个工作线程.
我需要停止主线程,直到所有其他线程都完成.
我知道(线程).Join.但这只适用于一个线程.
多个联接伤害了这样的表现.
t1.Join()
t2.Join()
...
t20.Join()
当程序一个接一个地等待每个人停下来.
我如何使主线程等待所有一组线程结束?
Las*_*olt 11
您应该真正研究任务并行(任务并行库).它使用线程池,但也管理任务窃取等.
报价:" 是TPL秤并发度动态最有效地利用所有可用的处理器此外,TPL处理工作的划分,线程的线程池调度,消除支持,状态管理等.低级细节. "在任务并行库上
你可以像这样使用它:
Task[] tasks = new Task[3]
{
Task.Factory.StartNew(() => MethodA()),
Task.Factory.StartNew(() => MethodB()),
Task.Factory.StartNew(() => MethodC())
};
//Block until all tasks complete.
Task.WaitAll(tasks);
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用某种循环来生成线程: