`

NET 4.0 多任务编程 之四 Parallel初体验

阅读更多
在.NET Framework 4.0中,在库的层次上,微软提供了大量的新内容来帮助程序员完成应用程序的并行化,其中包括Parallel LINQ,Task Parallel Library和Coordination Data Structures,这些新的类型和类,在System.Threading,System.Threading.Tasks,System.Linq和System.Collections.Concurrent这些名字空间中提供。通过这些新的类型和类,开发人员将无需面对如今复杂的多线程开发模式,而可以直接使用.NET Framework,更加高效简便地开发支持并行计算的应用程序,从而更加充分地利用多核CPU的优势,随着计算核心或者处理器的增加,以提升应用程序的性能。

dennis_zane同学在其《几行代码解决淘宝面试题 之Clojure版》一文中提到:为了多核,你要将list拆分下,每个子list并发去计算和,然后综合这些结果求出最终的和...话虽不错,未免失之简单,很多时候根据 source list 的不同类型,以及每次循环时所需要调用的处理方法执行时间的长短不同,要想达到最高性能,则必须对 Parallel相关特性进行详细的了解。


这里我们就先来介绍一下最简单最常用的TPL。




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

现在.NET 4.0 有了Parallel.ForEach(), Parallel.For(),PLINQ 等非常有用的并行相关的支持。但是,并不是简单的利用这些方法的简单形式就可以了。

大致上,.NET中的Parallel.ForEach 对 source list 有以下几种拆分模式:
  • Range 拆分。适用于原始输入是 Array 或 IList 的情况,这时候,list.Count 确定。所以比较容易根据 source list 的长度,拆分为对应的几个 Range 对象,一次分配好任务的拆分方式,而且因为范围互相不冲突,多个子任务之间不需要线程同步的开销。
  • Trunk 拆分。预先创建好几个工作者 trunk. 然后依次扫描 source,这些 chunk 轮流去获取 element 进行处理。一般每个 chunk 一次获取很少的元素,比如1个。对于不确定长度的 source 可能比较有用,但有线程同步的开销。这个可能会适用于不定长度的 source list. 比如,你自己定义一个返回 IEnumerable<T> 的 generator 方法,在里面根据具体的逻辑用 yield return 返回一系列元素,这个可能就比较复杂。
  • 自定义的 partitioner. 假设在自己对 source class 的内部构造比较了解的情况下,则有可能写出比系统的 partitioner 性能更高的自定义 partitioner. 但是,需要仔细阅读并了解 MSDN 的范例以创建 custom partitioner.


分享到:
评论

相关推荐

    .net 4.0版本资源

    .NET Framework 4.0的并行计算库(TPL)使得开发者可以轻松利用多核硬件的潜力,通过任务并行、数据并行和并发集合等功能实现高效的多线程编程。 8. **内存管理优化**: .NET 4.0改进了垃圾回收机制,减少了对...

    .NET FrameWork 4.0.30319

    FCL则是一组预先编写好的类库,涵盖了各种编程任务,如数据库访问、网络通信、图形绘制等,开发者可以使用这些类库快速开发应用程序。 .NET Framework 4.0.30319引入了多个新特性,例如: 1. **改进的性能**:通过...

    .net framework4.0环境

    并行任务库(Task Parallel Library, TPL)被引入,支持多核处理器环境下的并行计算。 4. **WCF与WF集成**:Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 在4.0版本中进行了深度...

    Microsoft .NET Framework 4.0运行库

    8. **并发和并行计算**:.NET Framework 4.0引入了Task Parallel Library(任务并行库),使得开发者可以更容易地利用多核处理器进行并发编程。此外,还有Parallel LINQ(PLINQ)提供并行查询的支持。 9. **垃圾...

    NET4.0并行计算技术基础

    .NET 4.0通过AggregateException类提供了一种统一的方式来捕获和处理多个并行任务中抛出的异常。 九、并行调试和性能分析 Visual Studio 2010及更高版本提供了并行堆栈窗口和任务窗口,帮助开发者调试并行代码。...

    .net4.0安装程序.net framework 4.0安装包

    类库则包含了大量的预定义类和方法,用于处理日常编程任务,如文件操作、网络通信、数据库交互等。 在.NET Framework 4.0中,引入了一些显著的改进和新特性。例如,性能得到了大幅提升,尤其是在内存管理和多线程...

    doNEt安装包4.0完整安装包.rar

    8. **并行计算支持**:.NET Framework 4.0引入了Task Parallel Library(任务并行库)和Parallel LINQ(并行查询),为开发者提供了强大的多核和多处理器环境下的并行编程工具。 9. **安全性增强**:在.NET ...

    dotNetFramework4.0

    .NET Framework 4.0包含了一套名为“Task Parallel Library”(任务并行库,TPL)的新工具,这允许开发者轻松地编写出利用多核处理器进行并行计算的代码,从而提高了程序的运行效率。此外,还有Parallel LINQ (PLINQ...

    netframework4.0.rar

    1. **Parallel Extensions**: 这个特性使得.NET开发者能够轻松地编写多线程和并行计算的应用,利用多核处理器的性能优势,提高应用程序的效率。 2. **Dynamic Language Runtime (DLR)**: DLR是.NET Framework 4.0中...

    .net Framework4.0

    同时,它引入了新的编程模型,如Task Parallel Library(任务并行库)和Dynamic Language Runtime(动态语言运行时),使得多线程编程和动态编程变得更加便捷。 二、32位与64位兼容性 .NET Framework 4.0的一个...

    C#4.0权威指南

    C#4.0还强化了对多线程和并发编程的支持,引入了任务并行库(Task Parallel Library, TPL)。TPL提供了一种更简洁的方式来编写异步和并行代码,从而利用多核处理器提高程序性能。同时,C#4.0还引入了“yield return...

    C# 4.0完全参考手册

    《C# 4.0完全参考手册》是一本详尽阐述C#编程语言第四版的权威指南,旨在帮助开发者深入理解和充分利用C# 4.0的特性与功能。该书全面覆盖了C#语言的基础、高级概念以及在.NET Framework 4.0环境下的应用。 一、C# ...

    C#4.0权威指南电子书

    在C# 4.0中,微软引入了多个关键改进和新特性,如动态类型、多语言互操作性(特别是与VB.NET和Python的互操作)、可选参数和命名参数、协程(通过Task Parallel Library实现)以及改进的异步编程模型等。这些变化...

    .NET Framework 4.0 离线安装包 dotNetFx40_Full_x86_x64.zip

    类库则提供了一组丰富的API,涵盖了各种编程任务,如数据库交互、网络通信、图形绘制等。 此离线安装包包含的主要组件有: 1. **ASP.NET 4.0**:这是一个用于构建动态网站和Web应用程序的框架,提供了强大的服务器...

    Framework 4.0 环境

    1. **并行计算支持**:随着多核处理器的普及,.NET Framework 4.0增加了对并行编程的广泛支持,如Task Parallel Library (TPL),它提供了一种更简洁的方式来利用多核硬件,提高程序的并发性能。 2. **动态编程**:...

    CSharp4.0规范

    引入了Task Parallel Library(TPL),使得并行编程变得更加简单,支持任务、并行循环、数据并行和取消操作。 11. **内存管理与垃圾回收** C# 4.0对垃圾回收机制进行了优化,减少了应用程序暂停时间,提升了性能...

    .NET 4.0 及兼容32位工具

    通过Task Parallel Library(任务并行库)和PLINQ(并行LINQ),开发者可以轻松地编写出能够充分利用多核硬件的高性能代码,这极大地提升了应用程序的运行效率。 在语言层面,C# 4.0和VB.NET 10.0作为.NET 4.0的...

    NET4.0工具dotNetFx40_Full_x86_x64.rar

    8. **并行计算和任务并行库(TPL)**:.NET 4.0引入了对多核处理器的原生支持,通过Task类和Parallel类,开发者可以轻松实现异步和并发编程,提高应用程序的执行效率。 9. **AppDomain增强**:允许更细粒度的隔离,...

    OpenMP 4.0 手册

    OpenMP(Open Multi-Processing)是一种应用编程接口(API),用于在共享内存并行计算机上进行多线程编程。OpenMP 4.0是该标准的一个版本,它引入了新的特性,增强了对现代多核处理器的支持,提高了并行计算的效率和...

Global site tag (gtag.js) - Google Analytics