×
思维导图备注
并发的艺术
首页
收藏书籍
阅读记录
书签管理
我的书签
添加书签
移除书签
性能工具
浏览
1
扫码
小字体
中字体
大字体
2022-01-24 12:46:01
请
登录
再阅读
上一篇:
下一篇:
O'Reilly Media,Inc.介绍
译者序
前言
本书的目标读者
本书的内容
排版约定
联系方法
致谢
第1章 并行让程序运行得更快
并行和并发:二者的差异是什么
采用线程化方法的4个步骤
第2步 设计与实现:采用线程来实现算法
第3步 测试正确性:检测并修复在线程化时引入的错误
第4步 性能调优:消除性能瓶颈
从一开始就采用并发是否可行
为什么要了解并发?并发能带来什么
并行算法的背景知识
分布式内存编程
并行算法简介
并发编程难不难
共享内存编程与分布式内存编程的比较
分解工作
共享内存模型的特有功能
内存效应
内存中的通信
互斥
生产者/消费者
读/写锁
共享数据
工作的静态/动态分配
线程危不危险
本书采用的并发编程方法
第2章 是否采用并发
任务之间存在哪些依赖性以及如何满足这些依赖性
数据分解
如何确保处理每个数据块的任务在执行更新操作时能够访问到所需要的数据
如何将数据块(和任务)分配到各个线程
示例:有限格网上的生命游戏
哪些算法不能并行
递推
归纳变量
归约
循环体间依赖性
如何将任务分配到线程
并发设计模型起步
示例:数值积分
第3章 算法正确性证明与性能衡量
示例:临界区问题
第二次尝试
第三次尝试
第4次尝试
Dekker的算法
第2a种情况:T0是优先线程
第2b种情况:T1是优先线程
第3种情况
是否存在无限延迟的情况
你学到了哪些知识
没有不好的线程,只有编写得不好的线程
性能测试(程序的执行情况如何)
Gustafson-Barsis定律
效率
关于加速比和效率的最后一点提示
硬件并行性的发展历史
第4章 多线程程序设计中的8条简单规则
规则2:在尽可能高的层次上实现并发
规则3:尽早考虑通过增加处理器核的数量来获得可伸缩性
规则4:尽可能使用线程安全的库
规则5:使用正确的多线程模型
规则6:永远不要假设程序会按照某种特定的顺序执行
规则7:尽可能使用线程局部存储或者与特定数据相关的锁
规则8:要敢于对代码进行修改以获得更好的并发性
小结
第5章 线程化库
Intel Threading Building Blocks
显式线程化
Windows Threads
其他主题
特定领域的库
第6章 并行求和与前缀求和
一种更实用的算法
前缀求和
一种更实用的算法
被创建的计算线程完成了哪些工作
设计要素权衡
简单性
可移植性
可伸缩性
设计要素权衡
简单性
可移植性
可伸缩性
选择
并发算法
统计和标记各个区间的元素
ArrayPack()函数
一些设计注意事项
最后的思考
第7章 映射归约
并发归约运算
栅栏对象的实现
设计要素权衡
简单性
可移植性
可伸缩性
映射归约的应用
映射归约作为一般性并发
第8章 排序
设计要素权衡
简单性
可移植性
可伸缩性
奇偶换位排序
尝试提高并发程度
设计要素权衡
简单性
可移植性
可伸缩性
希尔排序
串行希尔排序
并发希尔排序
设计要素权衡
简单性
可移植性
可伸缩性
快速排序
迭代版本中的并发计算
并发的迭代版本
最终的线程化版本
设计要素权衡
简单性
可移植性
可伸缩性
基数排序
直接基数排序
保持数据移动的稳定性
减少数据的访问量
并发的直接基数排序
设计要素权衡
简单性
可移植性
可伸缩性
第9章 搜索
设计要素权衡
简单性
可移植性
可伸缩性
二分搜索
并发解决方案
设计要素权衡
简单性
可移植性
可伸缩性
第10章 图算法
一种迭代式的解决方案
最短路径问题
设计要素权衡
简单性
可移植性
可伸缩性
Floyd算法的其他实现方式
目前还没有实现并发解决方案
对条件表达式求值进行锁定
最小生成树
Prim算法
我们从哪个串行算法开始
并发的Prim算法
设计要素权衡
简单性
可移植性
可伸缩性
现在来实现并发解决方案
创建深度优先搜索的线程
设计要素权衡
简单性
可移植性
可伸缩性
宽度优先搜索
静态图与动态图
第11章 线程化工具
线程问题调试器:线程检查器
性能工具
线程性能分析:标准的性能分析工具(随着时间推移而采样),线程分析器
其他主题
再接再厉
术语表
照片说明
暂无相关搜索结果!
×
二维码
手机扫一扫,轻松掌上学
×
《并发的艺术》电子书下载
请下载您需要的格式的电子书,随时随地,享受学习的乐趣!
EPUB 电子书
×
书签列表
×
阅读记录
阅读进度:
0.00%
(
0/0
)
重置阅读进度