我想了解什么是最佳方案,或者是否有任何文件/文章可以帮助我确定在使用普通的for循环时,在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
}
第二种情况 - 在foreach循环内部的任务:
foreach
{
Task t1 = Task.factory.startNew(()=>
{
//Do the same thing as case 1 that is thread safe
}
}
Task.waitall()
- 我进行了自己的测试,结果显示case 1比case 2表现要好得多。比例大致如下: 顺序 vs case 1 vs case 2 = 5秒:1秒:4秒
虽然在case 1和case 2之间几乎是1:4的比例?所以这是否意味着,如果我们想在循环内并行运行,我们应该始终使用parallel.foreach或parallel.for?