这本书所介绍的并行模式库(Parallel Patterns Library,PPL)实际上是一个模式化的C++模版库,而且作为Visual Studio 2010开发系统的一部分,它已经完全被内置到了这一版本的C++语言中。这意味着你可以像使...立即去当当网订购
这是一本介绍并行编程模式的书。在这本书中,我们使用了大量基于Microsoft Visual C++系统开发的代码示例,用以说明并行模式库(Parallel Patterns Library,PPL)和异步代理库(Asynchronous Agents Library)的使用方法。通过学习这本书中介绍的设计模式,你可以大大改善应用程序在多核计算机上的性能。而且这些模式不仅适用于现阶段的硬件环境,同时也为日后环境发展预留了扩展空间。相信随着计算机并行架构不断提升,它们的表现也会越来越好。 谁需要这本书
这本书面向那些在Windows操作系统下编写本地化代码注1的程序员。当然,PPL库本身是可移植性的,因此,理论上说它并不局限于Windows平台。即便你没有并行编程方面的经验和相关知识也没有关系。不过你最好具备一些C++方面的基础知识,例如模板、标准模板库(STL)以及lambda表达式(这是Microsoft Visual Studio 2010开发系统中新增的C++特性)。另外,对于线程和进程的运行方式,你最好也应该了解一些最基本的内容。
注意:书中的所有例子都是用C++语言写的,其中用到了并行模式库(PPL)。完整的代码可以在CodePlex网站上找到(网址为http://parallelpatternscpp.codeplex.com/)。
此外,这本书还有一本姐妹篇:《Parallel Programming with Microsoft .NET》,其中介绍的模式内容几乎完全相同,只不过那些代码是托管的罢了。 为什么需要这本书
Visual Studio 2010所提供的高级并行编程功能非常简单实用,学习它们绝对要比你重新开始学习并行编程要容易得多。
例如,并行模式库(PPL)和异步代理库就是为那些编写并行程序的C++程序员准备的。它们大大简化了应用程序实现并行化和并发的过程。PPL会动态检测运行时环境的并行度,以便充分利用所有的处理器资源来提升效率。此外,PPL及代理库在工作量分配以及线程中的任务调度方面也大有作为。这些库还提供了取消功能、状态管理以及其他各种服务。它们都充分利用了Visual C++平台上的并发运行时。
Visual Studio 2010开发系统中内置了一系列用于调试并行程序的工具。例如,并行栈窗口能查看应用程序所有线程中的调用栈信息,还能让你在线程框架和栈框架之间来回切换。并行任务窗口则与线程窗口非常相似,只不过它显示的是任务信息而非线程信息。此外,在Visual Studio分析器中,你还可以通过并发可视化工具中的视图来了解应用程序是如何与硬件设备、操作系统以及计算机上的其他进程交互的。而且,我们还可以用它找出程序性能上的瓶颈,例如内核使用率、线程竞争、跨核线程迁移、同步延迟、I/O重叠区域等各类信息。
如果想进一步了解Microsoft公司的并行技术,建议参考附录C中的相关内容。 需要准备些什么
本书中所有的代码示例都可以在http://parallelpatternscpp.codeplex.com/上找到,运行它们所需的系统配置如下:
? Microsoft Windows Vista SP1、Windows 7、Windows Server 2008或者Windows XP SP3 (32位或64位均可)操作系统。
? Microsoft Visual Studio 2010 SP1(用于程序性能分析的并发可视化工具只有在旗舰版(Ultimate)或者高级版(Premium)中才提供)。这里内置了支持这些示例运行的PPL和异步代理库。 如何使用本书
本书将从设计模式的角度来阐述并行编程技术。图1列出了将要介绍的具体模式以及这些不同模式之间的关系。其中,数字代表了该模式所在的章节。