.NET 4并行编程入门介绍

开发 后端
本文将介绍的是.NET 4并行编程入门,同时介绍了并行编程技术的利弊以及何时该采用并行技术。希望对大家有所帮助。

查看本系列其他文章,请参看

[[11564]]

本篇文章的议题如下:

1. 并行编程和多线程编程的区别。

2. 并行编程技术的利弊

3. 何时采用并行编程

1.并行编程和多线程编程的区别。

1.1并行编程。

现在随着多核计算机的普及,并行编程技术,也就是多核编程技术也逐渐称为开发的主流。为此,在.NET 4 中就引入了“并行编程”。在.NET 4 中一些列的Library和类为并行编程提供了支持,如: Task Parallel Library,Parallel  LINQ等。

其实在.NET 1.0中就有了并行编程技术的一些实现---多线线程技术。多线程***的问题就是难于使用和管理。在使用多线程的使用,因为它的复杂性,往往使用我们把注意力分散了多线程上。而致使我们的最初目的被掩盖了。

1.2 比较区别

在.NET 4中提出的并处编程的底层机制其实还是基于多线程的。但是他们之前***的区别就是.NET 4中的并行编程更加方便。

在传统的编程模型中,程序员负责创建线程,为线程分配任务,管理线程。一个形象的比喻:你拥有一批士兵,然后你对他们下达命令,之后,你就必须时刻监视你的那些士兵,确保他们按照你的意图办事。(很累吧!)

在.NET 4中的并行编程是依赖Task Parallel Library(后面简称为TPL) 实现的。在TPL中,最基本的执行单元是task(中文可以理解为"任务"),一个task就代表了你要执行的一个操作。你可以为你所要执行的每一个操作定义一个task,TPL就负责创建线程来执行你所定义的task,并且管理线程。TPL是面向task的,自动的;而传统的多线程是以人工为导向的。

Task机制使得我们把注意力关注在我们要解决的问题上面。如果之前的多线程技术使得我们放弃了一些并行编程的使用,那么.NET 4中的新的并行编程技术可以让我们重新建立信心。

虽然有了新的并行技术,但是传统的多线程的技术还是很有用的。当我们使用TPL中的并行技术的时候来执行多个task的时候,我们不用在关心底层创建线程,管理线程等。

2. 并行编程技术的利弊

使用并行技术***的好处就是提高了系统的性能。并行处理过程一般是这样的:一个要执行的任务被拆分为很多很小的部分,然后这些很小的部分就分别在不同处理器(可以是多核的一台电脑,也可以使很多的电脑)上执行。因为这些很多很小的部分同时在执行,所以称之为"并行"。

使用并处编程的时候需要考虑下面的问题:

1.开销问题。

并行执行不是免费的,也是要开销的。在并行运行开始和管理都是需要开销的,就类比在线程的创建和管理一样。在程序中,你要执行的任务越多,那么使用并行的效果就越好。

2. 数据的协调

如果在并行执行的那些小部分需要共享公共的数据,那么我们就要协调。一般来说,需要协调的数据越多,并行执行的性能损耗就越大。如果执行各个小部分之间都是独立的,那么我们就不用协调了。但是很多的时候,我们都是需要协调的。而且协调的技术也不是很难,在之后的文章中会一一讲述。

3.性能提高多少

增加一台计算机的CPU可能会提高程序的运行速度,但是不是绝对的。我们知道,一个应用程序在单核的计算机上运行的时间不一定(往往也不是)双核计算机的

1/2.所以,采用并行编程不一定就一定会成倍的提高程序的性能。因为性能与很多的因数有关的,硬件就是很大的因数。

3. 何时采用并行编程

建议:如果一个问题能够用并行编程解决,那么就用,否则就不用。听起来好像是废话,但是确实是一个很不错的建议。因为并行编程也不是***的,也只能

解决一类的问题,所以在用之前要分析问题了。如果一个问题确实能够用并行的方案来解决,但是有很多的因数影响,如之前我们提到的一些问题。权衡使用之后的开销和好处在决定是否使用。后续文章会给出很多的例子。

原文标题:.NET 4 并行(多核)编程系列之一入门介绍

链接:http://www.cnblogs.com/Leo_wl/archive/2010/05/31/1747928.html

【编辑推荐】

  1. 微软发布新版Windows 7及.NET 4软件开发工具包
  2. 详解.NET 4.0并行计算支持历史
  3. 详读.NET 4.0环境配置
  4. 详解.NET 4.0中异常处理方面的新特性
  5. 三方面诠释.NET 4.0的新特性
责任编辑:彭凡 来源: 博客园
相关推荐

2010-06-04 09:11:10

.NET并行编程

2010-06-08 08:41:08

.NET 4并行编程

2010-06-07 08:43:46

.NET 4并行编程

2010-06-09 09:18:34

.NET 4并行编程

2010-06-24 09:12:27

.NET 4并行编程

2010-06-11 09:01:02

.NET 4并行编程

2015-10-13 09:18:00

.Net编程教程

2009-07-24 15:41:00

ASP.NET编程入门

2024-04-07 09:04:18

Parallel 类编程工具.NET

2011-03-24 09:23:43

.NET 4多核并行

2010-04-21 09:23:09

.NET 4

2009-11-11 10:27:22

ADO.NET入门

2009-02-23 15:20:03

SQL Server数据库ASP.NET

2009-08-03 17:35:07

ASP.NET WebASP.NET编程工具

2017-04-25 15:20:11

Python进程mpi4py

2009-12-23 10:10:59

ADO.NET编程

2010-01-04 11:02:06

ADO.NET组件

2012-04-06 10:31:44

Java

2009-10-23 17:22:48

VB.NET编程

2012-04-10 10:04:26

并行编程
点赞
收藏

51CTO技术栈公众号