
设计模式:NET并行编程
《设计模式:NET并行编程》结合大量的项目实践,介绍了与并行编程相关的概念、方法和套用。《设计模式:NET并行编程》共7章:第1章主要介绍并行编程的基本概念与并行计算的基础理论,第2章主要介绍并行循环的知识,第3章介绍并行任务处理,第4章阐述并行合併计算的机理,第5章介绍future模式,第6章在前文的基础上深入探讨动态并行任务机制,第7章介绍并行编程的流水线机制。
基本介绍
- 书名:设计模式:NET并行编程
- 作者:Colin Cambell Ralph Johnson
- 出版日期:2012年4月1日
- 语种:简体中文
- ISBN:9787302279976
- 外文名:Parallel Programming with Microsoft .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures
- 出版社:清华大学出版社
- 页数:214页
- 开本:16
- 品牌:清华大学出版社
基本介绍
内容简介
《设计模式:NET并行编程》内容丰富,几乎涵盖了并行编程的各个方面。一方面,本书既有对并行计算理论的基础原理及架构的阐述,也有对动态任务并行机制以及流水线技术的深入探讨,更重要的是本书每一章都有丰富的实例及示例代码,这有助于读者深入了解其原理与套用。另一方面,本书并非只是一本纯理论的书籍,因此真正善于学习的读者,应该适当地完成一些“课后练习”。对本书示例进行自我学习和探索,我相信您能够从本书获得宝贵经验。《设计模式:NET并行编程》适用于在.NET Framework上编写託管代码的程式设计师,包括在Visual C#、Visual Basic以及Visual F#上编写代码的程式设计师。
作者简介
作者:(美)Colin Campbell Ralph Johnson Ade Miller Stephen Toub 译者:曹泽文 邹雪梅 李岸
Colin Campbell是Model—Based Software Testing and Analysis in C#的合着者之一,他发表过数篇有关软体分析的论文。他是西雅图的Modeled Computation LLC的创始人和负责人。
Ralph Johnson是伊利诺伊大学的研究副教授。他是Design Patterns的四个合着者之一,并且是开发了第一个自动重构工具Smalltalk Refactoring Browser的项目组的组长。近几年来,他一直致力于记载并行编程的模式。
Ade Miller是微软的patterns & practices组的主力开发,他在这里管理了数个敏捷团队,这些团队为微软的客户提供项目上的实用指导。他的首要兴趣在于并行计算和敏捷软体开发实践。
Stephen Toub在微软的并行计算平台团队中工作。他致力于为.NET和Visual Studio设计和开发下—代并发和并行编程模型。
Colin Campbell是Model—Based Software Testing and Analysis in C#的合着者之一,他发表过数篇有关软体分析的论文。他是西雅图的Modeled Computation LLC的创始人和负责人。
Ralph Johnson是伊利诺伊大学的研究副教授。他是Design Patterns的四个合着者之一,并且是开发了第一个自动重构工具Smalltalk Refactoring Browser的项目组的组长。近几年来,他一直致力于记载并行编程的模式。
Ade Miller是微软的patterns & practices组的主力开发,他在这里管理了数个敏捷团队,这些团队为微软的客户提供项目上的实用指导。他的首要兴趣在于并行计算和敏捷软体开发实践。
Stephen Toub在微软的并行计算平台团队中工作。他致力于为.NET和Visual Studio设计和开发下—代并发和并行编程模型。
图书目录
第1章 导论
1.1 潜在并行性的重要性
1.2 分解、协调和可扩展共享
1.2.1 了解任务
1.2.2 协调任务
1.2.3 数据的可扩展共享
1.2.4 设计方法
1.3 选择恰当的模式
1.4 关于术语
1.5 并行性的极限
1.6 一些技巧
1.7 练习
1.8 扩展阅读
第2章 并行循环
2.1 基础知识
2.1.1 并行for循环
2.1.2 并行foreach循环
2.1.3 并行linq(plinq)
2.1.4 预期
2.2 示例
2.2.1 信贷审查的顺序版本示例
2.2.2 使用parallel.foreach的信贷审查示例
2.2.3 plinq信贷审查示例
2.2.4 性能比较
2.3 变化形式
2.3.1 儘早中断循环
2.3.2 外部循环取消
2.3.3 异常处理
2.3.4 小循环体的特殊处理
2.3.5 控制并行度
2.3.6 在循环体中使用局部任务状态
2.3.7 对并行循环使用自定义的任务调度程式
2.4 反模式
2.4.1 步长不为一
2.4.2 隐藏的循环体依赖
2.4.3 少量叠代的小循环体
2.4.4 处理器的超额申请和申请不足
2.4.5 混合parallel类和plinq
2.4.6 输入枚举中的重複
2.5 设计说明
2.5.1 自适应分区
2.5.2 自适应并发
2.5.3 支持嵌套循环和伺服器应用程式
2.6 相关模式
2.7 练习
2.8 扩展阅读
第3章 并行任务
3.1 基础知识
3.2 示例
3.3 变化形式
3.3.1 取消任务
3.3.2 处理异常
3.3.3 等待第一个任务完成
3.3.4 推测执行
3.3.5 使用自定义的调度方式创建任务
3.4 反模式
3.4.1 闭包捕获的变数
3.4.2 清理任务所需要的资源
3.4.3 避免撤销执行绪
3.5 设计说明
3.5.1 任务和执行绪
3.5.2 任务生命周期
3.5.3 编写自定义的任务调度程式
3.5.4 未观测到的任务异常
3.5.5 数据并行性和任务并行性之间的关係
3.6 默认任务调度程式
3.6.1 执行绪池
3.6.2 分散管理的调度技术
3.6.3 workstealing策略
3.6.4 全局伫列中的顶层任务
3.6.5 局部伫列中的子任务
3.6.6 子任务的内联执行
3.6.7 执行绪注入
3.6.8 绕过执行绪池
3.7 练习
3.8 扩展阅读
第4章 并行合併计算
4.1 基础知识
4.2 示例
4.3 变化形式
4.3.1 使用并行循环进行合併计算
4.3.2 使用範围分割器进行合併计算
4.3.3 使用带有範围选择的plinq合併计算
4.4 设计说明
4.5 相关的模式
4.6 练习
4.7 扩展阅读
第5章 future模式
5.1 基础知识
5.1.1 future
5.1.2 延续任务
5.2 示例:adatum金融仪錶板
5.2.1 业务对象
5.2.2 分析引擎
5.2.3 视图和视图模型
5.3 变化形式
5.3.1 取消future和延续任务
5.3.2 拥有多个先行任务的情况
5.3.3 使用.net异步调用和future
5.3.4 消除瓶颈
5.3.5 运行时修改图
5.4 设计说明
5.4.1 分解成future和延续任务
5.4.2 函式式风格
5.5 相关的模式
5.5.1 流水线模式
5.5.2 主/从(master/worker)模式
5.5.3 动态任务并行模式
5.5.4 离散事件模式
5.6 练习
5.7 扩展阅读
第6章 动态任务并行
6.1 基础
6.2 示例
6.3 变化形式
6.3.1 while-not-empty并行
6.3.2 任务链与父子任务
6.4 设计说明
6.5 练习
6.6 扩展阅读
第7章 流水线
7.1 基础
7.2 示例
7.2.1 顺序图像处理
7.2.2 图像流水线
7.2.3 运行特性
7.3 变化形式
7.3.1 取消流水线
7.3.2 处理流水线异常
7.3.3 利用多个生产者实现负载平衡
7.3.4 流水线和流
7.3.5 异步流水线
7.4 反模式
7.4.1 执行绪饥饿
7.4.2 阻塞集合无穷等待
7.4.3 忘记getconsumingenumerable()方法
7.4.4 採用其他生产者/消费者集合
7.5 设计说明
7.6 相关模式
7.7 练习
7.8 扩展阅读
附录a 改写面向对象模式
附录b 调试和分析并行应用程式
附录c 技术概览
术语表
参考文献
1.1 潜在并行性的重要性
1.2 分解、协调和可扩展共享
1.2.1 了解任务
1.2.2 协调任务
1.2.3 数据的可扩展共享
1.2.4 设计方法
1.3 选择恰当的模式
1.4 关于术语
1.5 并行性的极限
1.6 一些技巧
1.7 练习
1.8 扩展阅读
第2章 并行循环
2.1 基础知识
2.1.1 并行for循环
2.1.2 并行foreach循环
2.1.3 并行linq(plinq)
2.1.4 预期
2.2 示例
2.2.1 信贷审查的顺序版本示例
2.2.2 使用parallel.foreach的信贷审查示例
2.2.3 plinq信贷审查示例
2.2.4 性能比较
2.3 变化形式
2.3.1 儘早中断循环
2.3.2 外部循环取消
2.3.3 异常处理
2.3.4 小循环体的特殊处理
2.3.5 控制并行度
2.3.6 在循环体中使用局部任务状态
2.3.7 对并行循环使用自定义的任务调度程式
2.4 反模式
2.4.1 步长不为一
2.4.2 隐藏的循环体依赖
2.4.3 少量叠代的小循环体
2.4.4 处理器的超额申请和申请不足
2.4.5 混合parallel类和plinq
2.4.6 输入枚举中的重複
2.5 设计说明
2.5.1 自适应分区
2.5.2 自适应并发
2.5.3 支持嵌套循环和伺服器应用程式
2.6 相关模式
2.7 练习
2.8 扩展阅读
第3章 并行任务
3.1 基础知识
3.2 示例
3.3 变化形式
3.3.1 取消任务
3.3.2 处理异常
3.3.3 等待第一个任务完成
3.3.4 推测执行
3.3.5 使用自定义的调度方式创建任务
3.4 反模式
3.4.1 闭包捕获的变数
3.4.2 清理任务所需要的资源
3.4.3 避免撤销执行绪
3.5 设计说明
3.5.1 任务和执行绪
3.5.2 任务生命周期
3.5.3 编写自定义的任务调度程式
3.5.4 未观测到的任务异常
3.5.5 数据并行性和任务并行性之间的关係
3.6 默认任务调度程式
3.6.1 执行绪池
3.6.2 分散管理的调度技术
3.6.3 workstealing策略
3.6.4 全局伫列中的顶层任务
3.6.5 局部伫列中的子任务
3.6.6 子任务的内联执行
3.6.7 执行绪注入
3.6.8 绕过执行绪池
3.7 练习
3.8 扩展阅读
第4章 并行合併计算
4.1 基础知识
4.2 示例
4.3 变化形式
4.3.1 使用并行循环进行合併计算
4.3.2 使用範围分割器进行合併计算
4.3.3 使用带有範围选择的plinq合併计算
4.4 设计说明
4.5 相关的模式
4.6 练习
4.7 扩展阅读
第5章 future模式
5.1 基础知识
5.1.1 future
5.1.2 延续任务
5.2 示例:adatum金融仪錶板
5.2.1 业务对象
5.2.2 分析引擎
5.2.3 视图和视图模型
5.3 变化形式
5.3.1 取消future和延续任务
5.3.2 拥有多个先行任务的情况
5.3.3 使用.net异步调用和future
5.3.4 消除瓶颈
5.3.5 运行时修改图
5.4 设计说明
5.4.1 分解成future和延续任务
5.4.2 函式式风格
5.5 相关的模式
5.5.1 流水线模式
5.5.2 主/从(master/worker)模式
5.5.3 动态任务并行模式
5.5.4 离散事件模式
5.6 练习
5.7 扩展阅读
第6章 动态任务并行
6.1 基础
6.2 示例
6.3 变化形式
6.3.1 while-not-empty并行
6.3.2 任务链与父子任务
6.4 设计说明
6.5 练习
6.6 扩展阅读
第7章 流水线
7.1 基础
7.2 示例
7.2.1 顺序图像处理
7.2.2 图像流水线
7.2.3 运行特性
7.3 变化形式
7.3.1 取消流水线
7.3.2 处理流水线异常
7.3.3 利用多个生产者实现负载平衡
7.3.4 流水线和流
7.3.5 异步流水线
7.4 反模式
7.4.1 执行绪饥饿
7.4.2 阻塞集合无穷等待
7.4.3 忘记getconsumingenumerable()方法
7.4.4 採用其他生产者/消费者集合
7.5 设计说明
7.6 相关模式
7.7 练习
7.8 扩展阅读
附录a 改写面向对象模式
附录b 调试和分析并行应用程式
附录c 技术概览
术语表
参考文献
转载请注明出处安可林文章网 » 设计模式:NET并行编程