我想知道最好的方法是什么,或者是否有任何文档/文章可以帮助我确定在每个循环的正常范围内使用 Parallel.foreach 和 Task 的区别,如下所示:
案例 1 - Parallel.foreach:
Parallel.foreach
{
// Do SOmething thread safe: parsing an xml and then save
// into a DB Server thry respoitory approach
}
案例 2 - foreach 中的任务:
foreach
{
Task t1 = Task.factory.startNew(()=>
{
//Do the same thing as case 1 that is thread safe
}
}
Task.waitall()
- 我确实做了自己的测试,结果显示案例 1 的性能比案例 2 好。比率大约是这样的:顺序 vs 案例 1 vs 案例 2 = 5s : 1s : 4s
虽然案例 1 和案例 2 几乎是 1:4?那么这是否意味着如果我们想在循环中并行运行,我们应该始终使用 parallel.foreach 或 parallel.for?