1.Parallel主要提供三个有用的方法 For,ForEach,和invoke
2.具体使用
(1)for 场景:计算一个int[]所有元素之和
int[] num = new int[] { 1, 2, 3, 4, 5 };
int total = 0;
Parallel.For(0, num.Length,
() =>
{
return 0;
},
(i,loopState,subtotal)=>
{
subtotal += num[i];
return subtotal;
},
(x)=>
Interlocked.Add(ref total,x));
int ss = total;
要注意,若在遍历里依次输出下标的话,会发现,并非是按照索引顺序进行遍历!
(2)Foreach 主要是用于对泛型集合元素的处理
List<int> list = new List<int>{1,2,3,4,5};
Parallel.ForEach(list,(item)=>
{
//do something
})
(3)Invoke 多个任务并行
Parallel.Invoke(() =>
{
//do something
},()=>
{
//do something
});
3.总结
Parallel简化了Task的操作。For,ForEach方法会自动为我们分配Task去完成工作(效果等同于直接使用Task)。Invoke方法简化了启动一组并行的操作,隐式启动的就是Task,接收参数为Params Actionp[]。上述方法,都无执行的先后顺序。