知识大全 VS2010中Parallel类实现并行计算

Posted 项目

篇首语:犀渠玉剑良家子,白马金羁侠少年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 VS2010中Parallel类实现并行计算相关的知识,希望对你有一定的参考价值。

VS2010中Parallel类实现并行计算  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在 NET Framework 中 在库的层次上 微软提供了大量的新内容来帮助程序员完成应用程序的并行化 其中包括Parallel LINQ(PLINQ) Task Parallel Library(TPL)和Coordination Data Structures 这里我们就先来介绍一下最简单最常用的TPL

  将跟随Visual Studio 一起发布的 NET Framework 将包含很多基于库的对并行计算的支持 包括数据的并行化 任务的并行化等等 这一切都通过一个共同的工作调度器进行管理 这些新的类型和类 将在System Threading System Threading Tasks System Linq 和 System Collections Concurrent这些名字空间中提供 通过这些新的类型和类 开发人员将无需面对如今复杂的多线程开发模式 而可以直接使用 NET Framework 更加高效简便地开发支持并行计算的应用程序 从而更加充分地利用多核CPU的优势 随着计算核心或者处理器的增加 以提升应用程序的性能

  而在 NET Framework中 Task Parallel Library (TPL)是其Parallel Extensions中一个重要组成部分 它提供了一种简便的多线程开发方式 通过它所提供的类或者函数 可以让程序员轻松地实现并行计算 其中 最简单的就是它的Parallel类

  Parallel类

  Parallel类就是TPL中的一个用于支持并行计算的类 Parallel类提供了诸多的静态函数 只需要简单的函数调用 我们就可以对常用的for循环 foreach循环进行并行化 下面我们通过一些实际的例子 来看看如何利用这个类将我们的应用程序并行化 以吃上多核这 免费的午餐

  创建示例项目

  为了演示如何将一个现有的项目并行化 我们需要先创建一个示例项目 在这个项目中 我们将模拟对数据的串行操作 然后介绍如何利用Parallel类将对数据的串行操作并行化 以充分利用多核CPU的优势 从而提升应用程序的性能

  在Visual Studio 中 我们新创建一个Visual C#的控制台应用程序 然后在这个项目中添加一个类Employee 其实现代码如下

  using System;

  using System Collections Generic;

  using System Linq;

  using System Text;

  namespace ParallelDemo

  

  // 职员类

  public class Employee

  

  public string FirstName

  

  get;

  set;

  

  public string LastName

  

  get;

  set;

  

  public string Address

  

  get;

  set;

  

  public DateTime HireDate

  

  get;

  set;

  

  public int EmployeeID

  

  get;

  set;

  

  // 模拟对数据的处理

  public static decimal Process(Employee employee)

  

  Console WriteLine( Processing employee EmployeeID);

  // 产生一个随机数

  // 用以表示处理当前数据需要的时间

  var rand = new Random(DateTime Now Millisecond);

  var delay = rand Next( );

  var count = ;

  var process = true;

  while (process)

  

  System Threading Thread Sleep( );

  count++;

  if (count >= delay)

  process = false;

  

  return delay;

  

  

  // 职员列表类

  // 这是我们需要处理的数据

  public class EmployeeList : List

  

  public EmployeeList()

  

  // 将职员添加到列表中

  Add(new Employee EmployeeID = FirstName = 张 LastName = 三 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 李 LastName = 四 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 王 LastName = 麻子 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 赵 LastName = 匡胤 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 钱 LastName = 进 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 孙 LastName = 俊鹏 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 李 LastName = 明 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 周 LastName = 大勇 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 吴 LastName = 明子 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 郑 LastName = 邦万 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 王 LastName = 朝 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 冯 LastName = 玛丽 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 陈 LastName = 良乔 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 褚 LastName = 春晖 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 卫 LastName = 斯理 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 蒋 LastName = 中正 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 沈 LastName = 洋洋 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 韩 LastName = 斌 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 杨 LastName = 雪 HireDate = DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 朱 LastName = 辉 HireDate = DateTime Parse( / / ) );

  DateTime Parse( / / ) );

  Add(new Employee EmployeeID = FirstName = 朱 LastName = 辉 HireDate = DateTime Parse( / / ) );

  

  

  

  

  

cha138/Article/program/net/201311/11645

相关参考

知识大全 解析VS2010利用VS.PHP插件调试PHP的方法

解析VS2010利用VS.PHP插件调试PHP的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 怎么检视dll函式 vs2010

怎么检视dll函式vs20101.开启命令列视窗CMD2.执行vcvarsall.batVS2010里vcvarsall.bat是在右键VS开启档案位置,D:\\MicrosoftVisualStud

知识大全 修改已安装VS2010帮助文档位置

修改已安装VS2010帮助文档位置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  VS帮助文档默

知识大全 VS2010 水晶报表的使用方法

VS2010水晶报表的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在VS中新建一个“

知识大全 OpenGL + VS C++ 2010编程环境搭建

OpenGL+VSC++2010编程环境搭建  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文

知识大全 Google免费的SVN服务器管理VS2010代码

Google免费的SVN服务器管理VS2010代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 用vs2010 tools 编写打包cab

  开始>所有程序>MicrosoftVisualStudio>VisualStudioTools>VisualStudio命令提示()(以管理员权限打开)  )cabarc将

知识大全 使用.net Remtoing并行计算

使用.netRemtoing并行计算  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在MSDN上

知识大全 在哪可以找到2010年山东省专升本 英语专业 师范类 教育学心理学和计算机的真题和答案

在哪可以找到2010年山东省专升本英语专业师范类教育学心理学和计算机的真题和答案?能给个网址么?你可以去济南的英雄山市场看看那里一般是山东的图书最全的地方。真题卷子是有的。你要是说网址。这个不会有人弄

知识大全 用VS2010在32位电脑上开发一个上位机软体复制到其他电脑上时打开出现问题,如图所示,请问如何解决

用VS2010在32位电脑上开发一个上位机软体复制到其他电脑上时打开出现问题,如图所示,请问如何解决?  以下文字资料是由(本站网www.cha138.com)小编为大家