Ale*_*lex 2 .net c# parallel-processing
当我需要一些并行处理时,通常会这样:
static void Main(string[] args)
{
var tasks = new List<Task>();
var toProcess = new List<string>{"dog", "cat", "whale", "etc"};
toProcess.ForEach(s => tasks.Add(CanRunAsync(s)));
Task.WaitAll(tasks.ToArray());
}
private static async Task CanRunAsync(string item)
{
// simulate some work
await Task.Delay(10000);
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我无法并行处理这些项目,而不得不使用Task.Run它来强制它在不同的线程上运行。
我想念什么?
Mar*_*ell 12
Task表示“需要做的事情,可能已经完成,可能正在并行线程上执行,或者取决于进程外数据(套接字等),或者可能只是连接到了交换机”的地方,说“做了”” -它有非常小的螺纹加工做,除了:如果您计划延续(又名await),然后以某种方式,将需要回到上一个线程来火,但是具体如何发生,是什么手段取决于所创建并拥有任务的任何代码。
注意:并行性可以用多个任务来表示(如果您愿意的话),但是多个任务并不意味着并行性。
在您的情况下:一切取决于是什么CanRun-是什么- 我们不知道。它也应该被称为CanRunAsync。
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |