Kje*_*sen 8 c# task-parallel-library c#-4.0
考虑这个庞大的任务池:
var tasks = new Task[4]
{
Task.Factory.StartNew(() => DoSomething()),
Task.Factory.StartNew(() => DoSomething()),
Task.Factory.StartNew(() => DoSomething()),
Task.Factory.StartNew(() => DoSomething()),
Task.Factory.StartNew(() => DoSomething())
};
Task.WaitAll(tasks);
Run Code Online (Sandbox Code Playgroud)
如果我只想同时说3个任务怎么办?我将如何在代码中实现它?
Gar*_*y.S 11
比MSDN版本更复杂的例子是使用Parallel.Invoke设置最大并行度:
Parallel.Invoke(
new ParallelOptions() { MaxDegreeOfParallelism = 3 },
() => DoSomething(),
() => DoSomething(),
() => DoSomething(),
() => DoSomething(),
() => DoSomething());
Run Code Online (Sandbox Code Playgroud)
然而,Parallel.Invoke()将阻塞,直到所有并行操作完成(这意味着除了parallel.invoke之外的任何代码都不会运行,直到它们全部完成).如果这对您不起作用,那么最终需要创建自己的任务调度程序,如Daniel所链接的MSDN文章所示.
| 归档时间: |
|
| 查看次数: |
7207 次 |
| 最近记录: |