Parallel.ForEach 与 Task.Factory.StartNew:并行集合处理的细微差别
在并行处理集合操作时,开发人员通常会选择 Parallel.ForEach 或 Task.Factory.StartNew。虽然两者都提供并行执行,但它们的方法和对执行的影响有所不同。
Parallel.ForEach 与 Task.Factory.StartNew 的比较
Parallel.ForEach 使用 Partitioner
效率考量
为了最大限度地提高效率,Parallel.ForEach 是更好的选择。它使用分区显着减少了开销,尤其是在大型集合中。相反,Task.Factory.StartNew 虽然创建单个任务,但可能会增加不必要的开销并减慢执行速度。
异步执行
Task.Factory.StartNew 异步运行,允许调用代码继续执行而不会阻塞。可以通过将 Parallel.ForEach 包裹在 Task.Factory.StartNew 调用中来复制此行为。但是,分区仍然被使用,从而确保效率。
自定义分区
Parallel.ForEach 通过允许自定义 Partitioner
总结
当需要对集合任务进行并行处理时,Parallel.ForEach 是更高效的选择。但是,如果需要异步执行,则将 Task.Factory.StartNew 与 Parallel.ForEach 结合使用可以提供一个平衡效率和异步功能的合适解决方案。
以上是Parallel.ForEach 与 Task.Factory.StartNew:哪个最适合并行集合处理?的详细内容。更多信息请关注PHP中文网其他相关文章!