一、概述

首先应该明白并行和并发的区别。
并发就是有多个几乎同时到达的线程需要被处理,但只有有限个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);});

C# 并行运算方法简析相关推荐

  1. Halcon阈值分割方法简析

    1. 基于直方图的自动阈值分割 1.1 关键算子 auto_threshold(Image : Regions : Sigma : ):使用多阈值分割单通道图像. 首先,计算图像的灰度直方图. 然后, ...

  2. 噪声的频谱分析的重要意义_噪声测量:噪声源识别与定位的方法简析

    来源:节选自<声学测量> 作者:陈克安 曾向阳 李海英 噪声测量的一项重要内容就是估计和寻找产生噪声的声源.确定噪声源位置是实施控制噪声措施的先决条件.从声源上控制噪声可以大大减轻噪声治理 ...

  3. 【博学谷学习记录】超强总结,用心分享|产品经理需求分析方法简析

    为什么要进行需求分析? 作为产品经理,每天要接触到大大小小不同的需求,在面对需求时,需要进行有效的需求分析,才能更好地了解问题,从而制定相应的解决方案,就是通过用户的问题,找到用户需求的最本质,给予最 ...

  4. 正则表达式中Pattern类、Matcher类和matches()方法简析

    1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.  它包括两个类:Pattern和Matcher . Pattern: 一个Pattern是一 ...

  5. 【博学谷学习记录】超强总结,用心分享|产品经理PEST分析方法简析

    PEST分析法是什么? PEST分析法是战略外部环境分析的基本工具,即通过政治的(Politics).经济的(Economic).社会的(Society)和技术的(Technology)角度或四个方面 ...

  6. Nmap使用方法简析

    NMAP 引子: Nmap, 是 Network Mapper 的缩写,由 Gordon Lyon 维护(更多关于 Mr. Lyon 的信息在这里: http://insecure.org/fyodo ...

  7. refresh() 方法简析

    IOC 控制反转_牦牛先生的博客-CSDN博客_ioc控制反转和依赖注入Spring Framework 概述https://blog.csdn.net/centrl/article/details/ ...

  8. 提高app用户粘性的方法简析

    app运营中,产品的用户增长固然很重要,但是用户的粘性和留存率同样重要.留存决定着我们整体的用户数量,假如留存率很低的话即使你增长得很快,但流失得也很多,到头来会发现整体的用户量并没有大幅度的改观. ...

  9. 放电管和压敏电阻使用方法简析

    压敏电阻在通过持续大电流后其自身的性能要退化,将压敏电阻与放电管并联起来(如图1所示),可以克服这一缺点,如下图: 在放电管尚未导通之前压敏电阻就开始动作,对暂态过电压进行钳位,泄放大电流,当放电管放 ...

最新文章

  1. python输出n阶矩阵_python-递归计算矩阵(nxn)的行列式
  2. HTML5 应用程序缓存
  3. python和pycharm之间的关系_浅析python,PyCharm,Anaconda三者之间的关系
  4. SAP 全球产品营销总监:产品营销驱动 B2B 企业爆发式增长的 6 大要点
  5. eureka client客户端启动时都做了哪些事
  6. Jquery中使用定时器setInterval和setTimeout
  7. 博客园php教程,PHP仿博客园,个人博客(1)_PHP教程
  8. 01.vue的简单实例
  9. 字符串t1t2t3t4
  10. linux MySQL数据备份
  11. 计算机基础应用课件,大学计算机基础应用课件
  12. 二代U盾/迷你充电宝/护颈仪液晶段码屏驱动芯片:VK1088B QFN32 超小体积封装LCD驱动芯片
  13. 振动试验设备的选择和使用
  14. 常见字读音(粤语)---(3)
  15. 《ClickHouse原理解析与应用实践》读书笔记(7)
  16. 中煤集团公司硬件扩容与数据库迁移项目实施方案
  17. C++的继承和派生(一)父类和派生类(子类)的介绍以及派生类的访问控制
  18. MySQL数据库简单的操作命令
  19. 【Google地球环游世界】Google Earth Pro for Mac 7.3.2
  20. 基于stc89c52电子钟综合设计

热门文章

  1. Bigpipe---FaceBook使用的页面加载技术
  2. Debian下IPv6设定主地址 Set primary IPv6 address under Debian Linux
  3. 《那些年啊,那些事——一个程序员的奋斗史》——44
  4. Codeforces 914D - Bash and a Tough Math Puzzle 线段树,区间GCD
  5. SQLServer用存储过程实现插入更新数据
  6. BZOJ 1026 [SCOI2009]windy数
  7. poj3264Balanced Lineup(倍增ST表)
  8. Client does not support authentication protocol requested by server;
  9. VLC 学习计划---文档阅读
  10. webpack --- 发布环境的配置 代码压缩 代码分类