2019年12月15日12:50:181 1.1K
深入理解并行编程 作者:[美] Paul E.Mckenney(保罗·E·麦肯尼)
深入理解并行编程 出版社: 电子工业出版社
深入理解并行编程 内容简介
《深入理解并行编程》首先以霍金提出的两个理论物理限制为引子,解释了多核并行计算兴起的原因,并从硬件的角度阐述并行编程的难题。接着,《深入理解并行编程》以常见的计数器为例,探讨其不同的实现方法及适用场景。在这些实现方法中,除了介绍常见的锁以外,《深入理解并行编程》还重点介绍了RCU的使用及其原理,以及实现RCU的基础:内存屏障。最后,《深入理解并行编程》还介绍了并行软件的验证,以及并行实时计算等内容。
《深入理解并行编程》适合于对并行编程有兴趣的大学生、研究生,以及需要对项目进行深度性能优化的软硬件工程师,特别值得一提的是,《深入理解并行编程》对操作系统内核工程师也很有价值。
深入理解并行编程 目录
第1章 如何使用本书
1.1 路线图
1.2 小问题
1.3 除本书之外的选择
1.4 示例源代码
1.5 这本书属于谁
第2章 简介
2.1 导致并行编程困难的历史原因
2.2 并行编程的目标
2.3 并行编程的替代方案
2.4 是什么使并行编程变得复杂
2.5 本章的讨论
第3章 硬件和它的习惯
3.1 概述
3.2 开销
3.3 硬件的免费午餐
3.4 对软件设计的启示
第4章 办事的家伙
4.1 脚本语言
4.2 POSIX多进程
4.3 原子操作
4.4 Linux内核中类似POSIX的操作
4.5 如何选择趁手的工具
第5章 计数
5.1 为什么并发计数不可小看
5.2 统计计数器
5.3 近似上限计数器
5.4 精确上限计数
5.5 特殊场合的并行计数
5.6 关于并行计数的讨论
第6章 对分割和同步的设计
6.1 分割练习
6.2 设计准则
6.3 同步粒度
6.4 并行快速路径
6.5 分割之外
6.6 分割、并行化与优化
第7章 锁
7.1 努力活着
7.2 锁的类型
7.3 锁在实现中的问题
7.4 基于锁的存在保证
7.5 锁:是英雄还是恶棍
7.6 总结
第8章 数据所有权
8.1 多进程
8.2 部分数据所有权和pthread线程库
8.3 函数输送
8.4 指派线程
8.5 私有化
8.6 数据所有权的其他用途
第9章 延后处理
9.1 引用计数
9.2 顺序锁
9.3 读-复制-修改(RCU)
9.4 如何选择
9.5 更新端怎么办
第10章 数据结构
10.1 从例子入手
10.2 可分割的数据结构
10.3 读侧重的数据结构
10.4 不可分割的数据结构
10.5 其他数据结构
10.6 微优化
10.7 总结
第11章 验证
11.1 简介
11.2 跟踪
11.3 断言
11.4 静态分析
11.5 代码走查
11.6 几率及海森堡BUG
11.7 性能评估
11.8 总结
第12章 形式验证
12.1 通用目的的状态空间搜索
12.2 特定目的的状态空间搜索
12.3 公理方法
12.4 SAT求解器
12.5 总结
第13章 综合应用
13.1 计数难题
13.2 使用RCU拯救并行软件性能
13.3 散列难题
第14章 高级同步
14.1 避免锁
14.2 内存屏障
14.3 非阻塞同步
第15章 并行实时计算
15.1 什么是实时计算
15.2 谁需要实时计算
15.3 谁需要并行实时计算
15.4 实现并行实时系统
15.5 实时VS.快速:如何选择
第16章 易于使用
16.1 简单是什么
16.2 API设计的Rusty准则
16.3 修整Mandelbrot集合
第17章 未来的冲突
17.1 曾经的CPU技术不代表未来
17.2 事务内存
17.3 硬件事务内存
17.4 并行函数式编程
附录A 重要问题
附录B 同步原语
附录C 为什么需要内存屏障
附录D 小问题答案
附录E 术语
附录F 感谢
深入理解并行编程 精彩文摘
同样,其他技术(包括计算机技术)也有很多改进。编写程序不再是一件困难的事情。电子表格软件允许大多数非程序员用他们的计算机得到结果。数十年前,这需要专家才能胜任。或许更好的例子是Web冲浪,还有内容创造。从2000年开始,非专业人士就可以在互联网上使用各种现在很常见的社交网络软件来轻松地创造内容。然而在1968年,像这样的内容创造还是一个远期研究项目[Eng68],那时还在用“就像UFO降落在白宫草坪”这样的比喻来描述它[Gri00]。
本文来自笑醉生梦投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。