Parallel 使用简化同步状态下的Task

本文深入探讨了Parallel类的三大核心方法For、ForEach和Invoke的使用场景与实践,包括计算数组元素总和、处理泛型集合及并行执行多个任务,展示了如何利用这些方法简化并行操作,提高代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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[]。上述方法,都无执行的先后顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值