您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Parallel.ForEach与Task.Run和Task.WhenAll

Parallel.ForEach与Task.Run和Task.WhenAll

在这种情况下,第二种方法将异步等待任务完成而不是阻塞。

但是,Task.Run在循环中使用Parallel.ForEach时有一个缺点-With ,Partitioner它的创建是为了避免执行不必要的任务。Task.Run(因为您正在执行此操作)将始终为每个项目执行单个任务,但是Parallel类批次可以工作,因此您创建的任务少于总工作项。这可以提供明显更好的整体性能,尤其是在循环体每个项目工作量较小的情况下。

在这种情况下,可以通过编写以下两种方法来组合使用:

await Task.Run(() => Parallel.ForEach(strings, s =>
{
    DoSomething(s);
}));

请注意,这也可以用以下简短形式编写:

await Task.Run(() => Parallel.ForEach(strings, DoSomething));
其他 2022/1/1 18:16:15 有545人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶