C# 并行运算方法简析

一、概述
首先应该明白并行和并发的区别。
并发就是有多个几乎同时到达的线程需要被处理,但只有有限个CPU,所以需要竞争上岗。
并行指有多个CPU资源同时处理多个线程,不存在竞争的概念,可以大量节省运行时间。

二、实现方法
C#中目前有Tasks命名空间中的Parallel类来完成并行开发。

2.1 Parallel
Parallel类有三个常见的方法:Invoke,For,Foreach,都可以实现多个方法的并行计算。For和ForEach方法多次调用同一个方法, Invoke可以同时调用不同的方法。

2.12 Invoke

stopWatch.Start();

Parallel.Invoke(() => { Run1(); }, () => { Run2(); });

stopWatch.Stop();
Console.WriteLine("Parallel run " + stopWatch.ElapsedMilliseconds + " ms.");

该方法可以将串行方法并行化,可以调用StopWatch类进行计时。

2.12 For

Parallel.For()可以无序并行运行迭代,类似for循环。

ParallelLoopResult result = Parallel.For(0, 100, (int i, ParallelLoopState pls) =>
            {
                Console.WriteLine("i: {0}, task : {1}", i, Task.CurrentId);
                Thread.Sleep(10);
            });

2.13 ForEach

该方法无序遍历实现IEnumerable或者List集合。

List<int> list = new List<int>();
 list.Add(0);
 Parallel.ForEach(list, item =>
 {
 A(item);
 });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值