欢迎来到天天文库
浏览记录
ID:33355630
大小:140.08 KB
页数:17页
时间:2019-02-25
《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
此文档下载收益归作者所有