首页 > 其他 > 详细

并行编程

时间:2018-06-05 11:08:45      阅读:228      评论:0      收藏:0      [点我收藏+]

读<C#并发编程经典实例.PDF>总结:

  如果程序中存在大量的计算任务,并且这些任务能够分割成几个独立的任务块,那么就应该使用并行编程。

  并行编程可提高CPU利用率。

  通常情况下,服务器程序不适合并行编程。大多数服务器本身就具有并行能力,在服务器上进行并行编程,将降低本身的并行处理能力,不会有实际的好处。

  并行编程分类:1、数据并行  2、任务并行

       数据并行是指有大量的数据需要处理,并且每一块数据的处理过程是彼此独立的。

       任务并行是需要执行大量任务,并且每个任务的执行过程是基本独立的。

  数据并行的几种做法:

    1、使用 Parallel.ForEach 方法

    2、使用 PLINQ,它为LINQ 查询提供了 AsParallel 扩展。

       比较:跟PLINQ 相比,Parallel 对资源更加友好,Parallel 与系统中的其他进程配合得比较好 , 而PLINQ 会试图让所有的 CPU 来执行本进程。

        Parallel 的缺点是它太明显。很多情况下,PLINQ 的代码更加优美。

      并行处理有一个非常重要的准则:每个任务块要尽可能的互相独立。 只要任务块互相独立,并行的性能就能做到最优。一旦在多个线程中共享状态,必须以同步方式访问程序的状态时,程序的并行性就变差了。

  任务并行中使用一个Task来表示任务。

  

  并行任务错误处理:

  由于操作是并行处理的,多个异常就会同时发生。系统会把这些异常封装在 AggregateException 类中,在程序中抛出代码。

  AggregateException 类型有几个实用的 Flatten 和 Handle 方法,用来简化错误处理的代码:

  

try
 {
     Parallel.Invoke(() => { throw new Exception(); },
             () => { throw new Exception(); });
 }
 catch (AggregateException ex)
 {
     ex.Handle(exception =>
     {
     Trace.WriteLine(exception);
     return true; // “已经处理”
     });
 }                    

 

并行编程

原文:https://www.cnblogs.com/tangchun/p/9138486.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!