精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel)

一文带你了解SOA接口测试 了解汽车电子行业的人,近几年可能经常见到一个词“SOA”,那SOA具体是什么?作为测试人员应该要测试哪些内容呢?这篇文章就简单给大家介绍一下。SOA(Service Oriented Architecture)是一种面向服务的架构,最早应用于IT行业,虽然行业内对于SOA的定义没有一个统一的描述,但是总体而言,SOA把功能定义成为服务,服务带有明确的可调用接口,并可以通过网络调用。在汽车领域,对于高性能计算平台而言,为了实现域控制器以及区域控制器之间的互联互通和软硬分离、缩短开发周期等优势,也引入了SOA的 阅读详情
[源码下载]


精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel)


作者: webabcd


介绍
C# 4.0 的新特性之并行运算
  • Parallel.For - for 循环的并行运算 
  • Parallel.ForEach - foreach 循环的并行运算 
  • Parallel.Invoke - 并行调用多个任务 
  • Task - 任务,基于线程池。其使我们对并行编程变得更简单,且不用关心底层是怎么实现的
  • PLINQ - 用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算


示例
1、Parallel.For 的 Demo
Parallel/ParallelFor.aspx.cs
代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

namespace  CSharp.Parallel
{
    
public   partial   class  ParallelFor : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            Normal();
            ParallelForDemo();
        }

        
private   void  Normal()
        {
            DateTime dt 
=  DateTime.Now;

            
for  ( int  i  =   0 ; i  <   20 ; i ++ )
            {
                GetData(i);
            }

            Response.Write((DateTime.Now 
-  dt).TotalMilliseconds.ToString());
            Response.Write(
" <br /> " );
            Response.Write(
" <br /> " );
        }

        
private   void  ParallelForDemo()
        {
            DateTime dt 
=  DateTime.Now;

            
//  System.Threading.Tasks.Parallel.For - for 循环的并行运算
            System.Threading.Tasks.Parallel.For( 0 ,  20 , (i)  =>  { GetData(i); });

            Response.Write((DateTime.Now 
-  dt).TotalMilliseconds.ToString());
            Response.Write(
" <br /> " );
        }

        
private   int  GetData( int  i)
        {
            System.Threading.Thread.Sleep(
100 );
            Response.Write(i.ToString());
            Response.Write(
" <br /> " );
            
return  i;
        }
    }
}

/*
运行结果:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2000.0514

0
13
1
19
7
12
18
6
2
8
10
14
4
16
5
3
15
17
9
11
300.0077
*/


2、Parallel.ForEach 的 Demo
Parallel/ParallelForEach.aspx.cs
代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

namespace  CSharp.Parallel
{
    
public   partial   class  ParallelForEach : System.Web.UI.Page
    {
        
private  List < int >  _data  =   new  List < int > ();

        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            InitData();

            Normal();
            ParallelForEachDemo();
        }

        
private   void  InitData()
        {
            _data.Clear();
            
for  ( int  i  =   0 ; i  <   20 ; i ++ )
            {
                _data.Add(i);
            }
        }

        
private   void  Normal()
        {
            DateTime dt 
=  DateTime.Now;

            
for  ( int  i  =   0 ; i  <   20 ; i ++ )
            {
                GetData(i);
            }

            Response.Write((DateTime.Now 
-  dt).TotalMilliseconds.ToString());
            Response.Write(
" <br /> " );
            Response.Write(
" <br /> " );
        }

        
private   void  ParallelForEachDemo()
        {
            DateTime dt 
=  DateTime.Now;

            
//  System.Threading.Tasks.Parallel.ForEach - foreach 循环的并行运算
            System.Threading.Tasks.Parallel.ForEach(_data, (index)  =>  { GetData(index); });

            Response.Write((DateTime.Now 
-  dt).TotalMilliseconds.ToString());
            Response.Write(
" <br /> " );
        }

        
private   int  GetData( int  i)
        {
            System.Threading.Thread.Sleep(
100 );
            Response.Write(i.ToString());
            Response.Write(
" <br /> " );
            
return  i;
        }
    }
}

/*
运行结果:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2000.0514

0
6
12
18
1
2
7
13
19
4
3
8
14
9
5
15
10
16
11
17
600.0154
*/


3、Parallel.Invoke 的 Demo
Parallel/ParallelInvoke.aspx.cs
代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

using  System.Threading;

namespace  CSharp.Parallel
{
    
public   partial   class  ParallelInvoke : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            var tasks 
=   new  Action[] { ()  =>  Task1(), ()  =>  Task2(), ()  =>  Task3() };

            
//  System.Threading.Tasks.Parallel.Invoke - 并行调用多个任务
            System.Threading.Tasks.Parallel.Invoke(tasks);
        }

        
private   void  Task1()
        {
            Thread.Sleep(
3000 );
            Response.Write(
" Task1 -  "   +   " ThreadId: "   +  Thread.CurrentThread.ManagedThreadId.ToString()  +   "  -  "   +  DateTime.Now.ToString( " HH:mm:ss " ));
            Response.Write(
" <br /> " );
        }

        
private   void  Task2()
        {
            System.Threading.Thread.Sleep(
3000 );
            Response.Write(
" Task2 -  "   +   " ThreadId: "   +  Thread.CurrentThread.ManagedThreadId.ToString()  +   "  -  "   +  DateTime.Now.ToString( " HH:mm:ss " ));
            Response.Write(
" <br /> " );
        }

        
private   void  Task3()
        {
            System.Threading.Thread.Sleep(
3000 );
            Response.Write(
" Task3 -  "   +   " ThreadId: "   +  Thread.CurrentThread.ManagedThreadId.ToString()  +   "  -  "   +  DateTime.Now.ToString( " HH:mm:ss " ));
            Response.Write(
" <br /> " );
        }
    }
}

/*
运行结果:
Task2 - ThreadId:26 - 09:11:58
Task1 - ThreadId:25 - 09:11:58
Task3 - ThreadId:24 - 09:11:58
*/


4、Task 的 Demo
Parallel/ParallelTask.aspx.cs
代码
/*
Task - 任务,基于线程池。其使我们对并行编程变得更简单,且不用关心底层是怎么实现的
*/

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

using  System.Threading;
using  System.Threading.Tasks;

namespace  CSharp.Parallel
{   
    
public   partial   class  ParallelTask : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            
/*
             * CancellationTokenSource - 取消任务的操作需要用到的一个类
             *     Token - 一个 CancellationToken 类型的对象,用于通知取消指定的操作
             *     IsCancellationRequested - 是否收到了取消操作的请求
             *     Cancel() - 结束任务的执行
             * ParallelOptions - 并行运算选项
             *     CancellationToken - 设置一个 Token,用于取消任务时的相关操作
             *     MaxDegreeOfParallelism - 指定一个并行循环最多可以使用多少个线程
             
*/

            CancellationTokenSource cts 
=   new  CancellationTokenSource();
            ParallelOptions pOption 
=   new  ParallelOptions() { CancellationToken  =  cts.Token };
            pOption.MaxDegreeOfParallelism 
=   10 ;

            Response.Write(
" 开始执行,3.5 秒后结束 " );
            Response.Write(
" <br /> " );

            
/*
             * Task - 任务类
             *     Factory.StartNew() - 创建并开始一个或一批新任务
             *     ContinueWith() - 此任务完成后执行指定的另一个任务
             *     AsyncState - 此任务的上下文对象
             *     Wait() - 阻塞,直到任务完成
             
*/

            Task task0 
=  Task.Factory.StartNew(()  =>
            {
                Thread.Sleep(
3500 );
                cts.Cancel();
                Response.Write(
" 结束 " );
                Response.Write(
" <br /> " );

            });

            
//  通过 System.Threading.Tasks.Parallel.Invoke 执行任务的时候,可以加入 ParallelOptions 参数,用于对此并行运算做一些配置
            System.Threading.Tasks.Parallel.Invoke(pOption,
                () 
=>  Task1(pOption.CancellationToken),
                () 
=>  Task2(pOption.CancellationToken));


            
/*
             * 一个 Task 内可以包含多个 Task
            Task tasks = new Task(() => 
            {
                Task.Factory.StartNew(() => Method()); 
                Task.Factory.StartNew(() => Method2()); 
                Task.Factory.StartNew(() => Method3()); 
            }); 
            tasks.Start(); 
            // 阻塞,直到整个任务完成
            tasks.Wait(); 
            
*/


            
/*
             * 带返回值的 Task
            Func<object, long> fun = delegate(object state)
            {
                return 1.0;
            };
            Task<long> tsk = new Task<long>(fun, "state");
            tsk.Start();
            Response.Write(tsk.Result.ToString()); 
            
*/
        }
       
        
private   void  Task1(CancellationToken token)
        {
            
//  每隔 1 秒执行一次,直到此任务收到了取消的请求
            
//  注意:虽然此处是其他线程要向主线程(UI线程)上输出信息,但因为使用了 Task ,所以不用做任何处理
             while  ( ! token.IsCancellationRequested)
            {
                Response.Write(
" Task1 -  "   +   " ThreadId:  "   +  Thread.CurrentThread.ManagedThreadId.ToString());
                Response.Write(
" <br /> " );
                Thread.Sleep(
1000 );
            }

        }
        
private   void  Task2(CancellationToken token)
        {
            
while  ( ! token.IsCancellationRequested)
            {
                Response.Write(
" Task2 -  "   +   " ThreadId:  "   +  Thread.CurrentThread.ManagedThreadId.ToString());
                Response.Write(
" <br /> " );
                Thread.Sleep(
1000 );
            }
        }
    }
}

/*
运行结果:
开始执行,3.5 秒后结束
Task2 - ThreadId: 6
Task1 - ThreadId: 48
Task1 - ThreadId: 48
Task2 - ThreadId: 6
Task2 - ThreadId: 6
Task1 - ThreadId: 48
Task2 - ThreadId: 6
Task1 - ThreadId: 48
结束
*/


5、PLINQ 的 Demo
Parallel/ParallelPLINQ.aspx.cs
代码
/*
PLINQ - 用于对内存中的数据做并行运算,也就是说其只支持 LINQ to Object 的并行运算
*/

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

namespace  CSharp.Parallel
{
    
public   partial   class  ParallelPLINQ : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            List
< int >  list  =   new  List < int > ();
            
for  ( int  i  =   0 ; i  <   100 ; i ++ )
            {
                list.Add(i);
            }

            
//  AsParallel() - 并行运算
            
//  AsSequential() - 串行运算
            
//  AsOrdered() - 保持数据的原有顺序(AsSequential()指的是串行运算;AsOrdered()指的是如果在并行运算的前提下,它会把结果先缓存,然后排序,最后再把排序后的数据做输出)
            
//  AsUnordered() - 可以不必保持数据的原有顺序
            
//  WithDegreeOfParallelism() - 明确地指出需要使用多少个线程来完成工作
            
//  WithCancellation(new CancellationTokenSource().Token) - 指定一个 CancellationToken 类型的参数

            ParallelQuery nums 
=  from num  in  list.AsParallel < int > ().AsOrdered < int > ()
                                 
where  num  %   10   ==   0
                                 select num;

            
foreach  (var num  in  nums)
            {
                Response.Write(num.ToString());
                Response.Write(
" <br /> " );
            }

            
//  聚合方法也可以做并行运算
            Response.Write(list.AsParallel().Average().ToString());
            Response.Write(
" <br /> " );

            
//  自定义聚合方法做并行运算的 Demo(实现一个取集合的平均值的功能)
             double  myAggregateResult  =  list.AsParallel().Aggregate(
                
//  聚合变量的初始值
                0d,   

                
//  在每个数据分区上,计算此分区上的数据
                
//  第一个参数:对应的数据分区的计算结果;第二个参数:对应的数据分区的每个数据项
                (value, item)  =>  
                {
                    
double  result  =  value  +  item;
                    
return  result; 
                },

                
//  根据每个数据分区上的计算结果,再次做计算
                
//  第一个参数:全部数据的计算结果;第二个参数:每个数据分区上的计算结果
                (value, data)  =>
                {
                    
double  result  =  value  +  data;
                    
return  result;
                },

                
//  根据全部数据的计算结果再次计算,得到最终的聚合结果
                (result)  =>  result  /  list.Count
            );

            Response.Write(myAggregateResult.ToString());
        } 
    }
}

/*
运行结果:
0
10
20
30
40
50
60
70
80
90
49.5
49.5 
*/


注:关于并行运算的实例可以参考
http://code.msdn.microsoft.com/ParExtSamples


OK
[源码下载]
【逆强化学习-1】学徒学习(Apprenticeship Learning) 逆强化学习算法1:学徒学习。算法原理+算法步骤+代码+仿真:一个基于gym的小车上山的仿真。附赠学徒学习+Q-Table及学徒学习+DQN的全套代码。 阅读详情

相关推荐

MYSQL、ORACLE、PostgreSQL数据库对象层次及权限管理对比

本文为出于自己扩展、比较、图形化的思维路径自行总结归纳,可能有些细节不太准确,欢迎指正。MySQL、Oracle、PostgreSQL关系型数据库都有管理员用户、用户、权限管理、表函数索引等数据库对象,schema。但在数据库对象隶属层次上有差异和相同的地方。

rachel_2016的博客 1489

c# 并行和多线程编程——认识Parallel

一、 Parallel的使用 1、Parallel.Invoke 2、Parallel.For 3、Parallel.Foreach 二、 Parallel中途退出循环和异常处理 1、当我们使用到Parallel,必然是处理一些比较耗时的操作,当然也很耗CPU和内存,如果我们中途向停止,怎么办呢? 2、异常处理   随着多核时代的到来,并行开发越来越展示出它的强大威力!使用并行程序,充分的利用系统资源,提高程序的性能。在.net 4.0中,微软给我们提供了一个新的命名空间:Syst

biyusr的专栏 2927

手把手教你用树莓派蓝牙抓取小米温湿度计2代数据,接入HomeAssistant(附密钥获取避坑指南)

本文详细介绍了如何通过树莓派蓝牙抓取小米温湿度计2代数据并接入HomeAssistant的完整流程。重点解析了获取32位加密密钥的三种方法,包括使用Telink Flasher工具、米家APP抓包和开源工具ATC_MiThermometer,并提供了HomeAssistant集成配置和常见问题排查指南,帮助用户实现稳定可靠的温湿度监测。

一名菜鸟攻城师 778

C#多线程处理List集合数据

List集合是非线程安全的,所以我们采用并行编程时会发生错误。如下图所示 Parallel.For(0, 1000, (i) => { Product product = new Product(); product.Name = "name" + i; product.Category = "Category" + i; product.SellPrice = i; _Products.Add(prod

ghhong1988的专栏 8525

ERA5数据批量下载

ERA5再分析数据的IDM接管下载

qq_38734327的博客 3034

Zemax实战:手把手教你设计一个40倍、NA0.65的显微物镜(附初始结构文件)

本文详细介绍了使用Zemax设计40倍、NA0.65显微物镜的完整流程,从初始结构搭建到优化验证,涵盖光学设计的关键技巧和实战经验。通过分阶段优化策略和公差分析,帮助工程师快速掌握高倍显微物镜的设计方法,提升光学系统性能。

weixin_42525369的博客 339

C#并发实战Parallel.ForEach使用

转自:<渔人>cnblogs.com/heweijian/p/11330282.html前言最近给客户开发一个伙食费计算系统,大概需要计算2000个人的伙食。需求是按照员工的预定报餐计划对消费记录进行检查,如有未报餐有刷卡或者有报餐没刷卡的要进行一定的金额扣减等一系列规则。一开始我的想法比较简单,直接用一个for循环搞定,统计结果倒是没问题,但是计算出来太慢了需要7,8分钟。这样系统服...

weixin_68436326的博客 589

从0开始写Vue项目-环境和项目搭建

什么是VueVue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)2.介绍与描述动态构建用户界面的渐进式JavaScript框架作者:尤雨溪3.Vue的特点遵循MVVM模式编码简洁,体积小,运行效率高,适合移动/PC端开发它本身只关注UI,可以引入其它第三方库开发项目4.与其他JS框架的关联借鉴 Angular 的模板和数据绑定技术借鉴 React 的组件化和虚拟DOM技术5.Vue周边库vue-cli:vue脚手架axios。

不愧是暮言的博客 1483

C#并发实战Parallel.ForEach使用与测评

转自:<渔人>cnblogs.com/heweijian/p/11330282.html前言最近给客户开发一个伙食费计算系统,大概需要计算2000个人的伙食。需求是按照员工的预定报餐计划对消费记录进行检查,如有未报餐有刷卡或者有报餐没刷卡的要进行一定的金额扣减等一系列规则。一开始我的想法比较简单,直接用一个for循环搞定,统计结果倒是没问题,但是计算出来太慢了需要7,8分钟。这样系统服...

weixin_68436326的博客 978

光学薄膜设计入门:Essential Macleod中文版从安装到实战全攻略

本文为光学薄膜设计初学者提供Essential Macleod软件从安装部署到实战应用的全流程中文指南。详细解析了软件核心界面、材料管理及工作流程,并通过一个完整的宽带增透膜设计实例,手把手演示膜系构建、优化与分析方法,帮助用户快速掌握这一业界标杆工具,跨越理论与实操的门槛。

weixin_29309475的博客 980

小白也能懂!一步步教你用FPGA加速YOLO目标检测(入门篇)

安装到 PYNQ 开发板中。该库为 PYNQ 平台提供了对量化神经网络(如 YOLO)的硬件加速支持。确保你的电脑已连接到外网,如 WiFi 或热点(手机热点理论上也可用,未实测)。当你看到安装成功的提示后,打开 Jupyter Notebook,你会发现在。趁这个机会,泡了杯茶,刷了会儿手机,顺便感慨了一下开源社区的强大……页面中多出了一些新的项目文件夹 —— 这就是我们刚才安装的。参数,浅拷贝只克隆最近一次提交,减少数据量,避免超时问题。初始化,打开该文件,即可运行我们的Tiny YOLO。

FJN110的博客 1597

NET 4.0 - C# 4.0 新特性之并行运算(Parallel)

C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算  Parallel.ForEach - foreach 循环的并行运算  Parallel.Invoke - 并行调用多个任务  Task - 任务,基于线程池。其使我们对并行编程变得更

kevinsung的专栏 4006

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

转载 精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) https://www.cnblogs.com/webabcd/archive/2010/0...

精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) 介绍C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parallel.ForEach - foreach 循环的并行运算 Parallel.Invoke - 并行调用多个任务 Task - 任务,基于线程池。其使我们对并行编程...

weixin_30323631的博客 131

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C#/.NET 并行编程Parallel常用语法详解

Parallel用于并行编程,它是在Task的基础上做了封装 4.5 1、Parallel.Invoke 主要用于任务的并行 这个函数的功能和Task有些相似,就是并发执行一系列任务,然后等待所有完成。和Task比起来,省略了Task.WaitAll这一步。它有两种形式: Parallel.Invoke( params Action[] actions); Parallel.Invoke(Acti...

老陈聊架构 3312

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C#并行计算类Parallel的性能测试

这个假期主要做两件

HuLihui's Blog 1万+

C#任务并行库 (TPL)之Parallel.For和Parallel.ForEach循环、处理并行循环中的异常

在实际应用中,使用Parallel.For和Parallel.ForEach时需要考虑任务的复杂性、数据依赖性和同步问题,以确保并行循环能带来性能上的提升。同时,监控并行循环的执行情况和资源使用情况也是保证应用程序高效稳定运行的重要方面。

qq_35320456的博客 4873

C# 认识Parallel

Parallel

wwan_alterdomus的博客 1690

C#并行编程核心技巧(Parallel类实战精华)

掌握C#多线程编程:Parallel类使用技巧,提升程序性能。详解Parallel.For、Parallel.ForEach在数据处理、任务并行等场景的应用,突出线程安全与异常处理要点。助你高效实现并行计算,优化执行效率,值得收藏。

Algorift的博客 954

C#并行开发_Thread/ThreadPool, Task/TaskFactory, Parallel

大家好,本次讨论的是C#中的并行开发,给力吧,随着并行的概念深入,哥也赶上这个潮流了,其实之前讨论C#的异步调用或者C#中BeginInvoke或者Invoke都已经涉及了部分本篇的内容。 参考书目:Professional.C#.4.0.and.NET.4.pdf 以及 Pro .NET 4 Parallel Programming in C#.pdf Parallel Program in

得救之道就在其中 2万+

C#并行编程中的Parallel.Invoke

一、基础知识 并行编程:并行编程是指软件开发的代码,它能在同一时间执行多个计算任务,提高执行效率和性能一种编程方式,属于多线程编程范畴。所以我们在设计过程中一般会将很多任务划分成若干个互相独立子任务,这些任务不考虑互相的依赖和顺序。这样我们就可以使用很好的使用并行编程。但是我们都知道多核处理器的并行设计使用共享内存,如果没有考虑并发问题,就会有很多异常和达不到我们预期的效果。不过还好N...

weixin_33885676的博客 820

.NET 4.x 迁移精进实战:CLR 4.0 并行运行时与异步演进指南

.NET 运行时(CLR)是 Windows 平台托管应用的底层执行引擎,其版本演进直接决定应用的并发能力、内存效率与兼容性边界。CLR 4.0 引入并行垃圾回收、多版本共存(Side-by-Side Execution)及 Task 并发模型,为后续 async/await 和现代 .NET 的异步编程范式奠定基础;而 .NET 4.5 则通过深度重构 ASP.NET 管道与 WPF 渲染管线,显著提升 I/O 密集型与 UI 交互类系统的吞吐与响应。掌握这些底层机制,不仅关乎老旧金融、政务系统在不推倒重

ciyinzhi8788的博客 436

.NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel)

介绍 C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parallel.ForEach - foreach 循环的并行运算 Parallel.Invoke - 并行调用多个任务 Task - 任务,基于线程池。其使我们对并行编程变得更简单,且不用关心底层是怎么实现的 PLINQ - 用于对内存中的数据做并行运算,也就是说其只支持 LINQ

Hello World专栏 769
上一篇: 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数, 动态绑定(dynamic), 泛型协变和逆变, CountdownEvent, Barrier
下一篇: 精进不休 .NET 4.0 (6) - ADO.NET Data Services 1.5 新特性
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值