vs2010中parallel类实现并行计算

vs2010中parallel类实现并行计算

ID:33355630

大小:140.08 KB

页数:17页

时间:2019-02-25

vs2010中parallel类实现并行计算_第1页
vs2010中parallel类实现并行计算_第2页
vs2010中parallel类实现并行计算_第3页
vs2010中parallel类实现并行计算_第4页
vs2010中parallel类实现并行计算_第5页
资源描述:

《vs2010中parallel类实现并行计算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VS2010中Parallel类实现并行计算本文来自IT168网站作者:陈良乔在本系列的第一篇文章“VisualStudio2010对并行计算的支持”中,我们简要地介绍了微软为并行计算提供了完整的解决方案。如果你是一个.NET程序员,同时又在进行并行计算方面的开发,那么即将发布的.NETFramework4.0将是微软送给你的一份大礼。在.NETFramework4.0中,在库的层次上,微软提供了大量的新内容来帮助程序员完成应用程序的并行化,其中包括ParallelLINQ(PLINQ),TaskParallelLibr

2、ary(TPL)和CoordinationDataStructures。这里我们就先来介绍一下最简单最常用的TPL。  将跟随VisualStudio2010一起发布的.NETFramework4.0将包含很多基于库的对并行计算的支持。包括数据的并行化,任务的并行化等等,这一切都通过一个共同的工作调度器进行管理。这些新的类型和类,将在System.Threading,System.Threading.Tasks,System.Linq,和System.Collections.Concurrent这些名字空间中提供。通过这

3、些新的类型和类,开发人员将无需面对如今复杂的多线程开发模式,而可以直接使用.NETFramework,更加高效简便地开发支持并行计算的应用程序,从而更加充分地利用多核CPU的优势,随着计算核心或者处理器的增加,以提升应用程序的性能。  而在.NETFramework中,TaskParallelLibrary(TPL)是其ParallelExtensions中一个重要组成部分,它提供了一种简便的多线程开发方式,通过它所提供的类或者函数,可以让程序员轻松地实现并行计算。其中,最简单的就是它的Parallel类  Parall

4、el类  Parallel类就是TPL中的一个用于支持并行计算的类。Parallel类提供了诸多的静态函数,只需要简单的函数调用,我们就可以对常用的for循环,foreach循环进行并行化。下面我们通过一些实际的例子,来看看如何利用这个类将我们的应用程序并行化,以吃上多核这“免费的午餐”。  创建示例项目  为了演示如何将一个现有的项目并行化,我们需要先创建一个示例项目。在这个项目中,我们将模拟对数据的串行操作,然后介绍如何利用Parallel类将对数据的串行操作并行化,以充分利用多核CPU的优势,从而提升应用程序的性能

5、。  在VisualStudio2010中,我们新创建一个VisualC#的控制台应用程序。然后在这个项目中添加一个类Employee,其实现代码如下: usingSystem;  usingSystem.Collections.Generic;  usingSystem.Linq;  usingSystem.Text;  namespaceParallelDemo  {  //职员类  publicclassEmployee  {  publicstringFirstName  {  get;  set;  }  pu

6、blicstringLastName  {  get;  set;  }  publicstringAddress  {  get;  set;  }  publicDateTimeHireDate  {  get;  set;  }  publicintEmployeeID  {  get;  set;  }  //模拟对数据的处理  publicstaticdecimalProcess(Employeeemployee)  {  Console.WriteLine("Processing{0}",employee.E

7、mployeeID);  //产生一个随机数  //用以表示处理当前数据需要的时间  varrand=newRandom(DateTime.Now.Millisecond);  vardelay=rand.Next(1,5);  varcount=0;  varprocess=true;  while(process)  {  System.Threading.Thread.Sleep(1000);  count++;  if(count>=delay)  process=false;  }  returndelay; 

8、 }  }  //职员列表类  //这是我们需要处理的数据  publicclassEmployeeList:List  {  publicEmployeeList()  {  //将职员添加到列表中  Add(newEmployee{EmployeeID=1,FirstName="张",LastName="三",H

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。