《并发模式与应用实践》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(印度)阿图尔·S.科德著;徐坚译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2019
  • ISBN:9787111625063
  • 页数:208 页
图书介绍:本书解释了如何利用并行体系结构的不同特性,使代码更快、更高效地运行。它首先介绍基本的并发概念,并讨论显式锁定、无锁编程、future模式和actor模式。然后深入介绍不同的并发模型和并行算法,并将它们应用到不同的场景中。读者将在分布式和并行应用程序中发现这些模式的基本原理,然后研究future、不可变性和单子流如何帮助创建更健壮的代码。本书还将讨论多线程设计模式,如主/从模式、Leader/Followers模式、map-reduce模式以及监视器模式,帮助读者学习使用这些模式的实际编码。在本书的最后,读者将学习actor模式,即消息传递的并发范式。

第1章 并发简介 1

1.1 并发轻而易举 2

1.1.1 推动并发 3

1.1.2 分时 6

1.1.3 两种并发编程模型 7

1.2 消息传递模型 8

1.2.1 协调和通信 10

1.2.2 流控制 12

1.2.3 分治策略 14

1.2.4 进程状态的概念 15

1.3 共享内存和共享状态模型 16

1.3.1 线程交错——同步的需要 18

1.3.2 竞争条件和海森堡bug 20

1.3.3 正确的内存可见性和happens-before原则 21

1.3.4 共享、阻塞和公平 22

1.3.5 异步与同步执行 24

1.3.6 Java的非阻塞I巭O 25

1.4 模式和范式 26

1.4.1 事件驱动的架构 28

1.4.2 响应式编程 29

1.4.3 actor范式 31

1.4.4 消息代理 32

1.4.5 软件事务性内存 33

1.4.6 并行集合 34

1.5 本章小结 35

第2章 并发模式初探 37

2.1 线程及其上下文 38

2.2 竞争条件 40

2.2.1 监视器模式 44

2.2.2 线程安全性、正确性和不变性 45

2.2.3 双重检查锁定 48

2.2.4 显式锁定 52

2.2.5 生产者卐消费者模式 60

2.2.6 比较和交换 66

2.3 本章小结 68

第3章 更多的线程模式 70

3.1 有界缓冲区 72

3.1.1 策略模式——客户端轮询 74

3.1.2 接管轮询和睡眠的策略 75

3.1.3 使用条件变量的策略 77

3.2 读写锁 78

3.2.1 易读的RW锁 80

3.2.2 公平锁 84

3.3 计数信号量 86

3.4 我们自己的重入锁 89

3.5 倒计时锁存器 91

3.6 循环屏障 95

3.7 future任务 97

3.8 本章小结 100

第4章 线程池 101

4.1 线程池 102

4.1.1 命令设计模式 104

4.1.2 单词统计 105

4.1.3 单词统计的另一个版本 107

4.1.4 阻塞队列 107

4.1.5 线程中断语义 111

4.2 fork-join池 111

4.2.1 Egrep——简易版 112

4.2.2 为什么要使用递归任务 113

4.2.3 任务并行性 116

4.2.4 使用fork-join API实现快速排序 117

4.2.5 map-reduce技术 124

4.3 线程的工作窃取算法 125

4.4 主动对象 128

4.4.1 隐藏和适应 129

4.4.2 使用代理 129

4.5 本章小结 132

第5章 提升并发性 133

5.1 无锁堆栈 134

5.1.1 原子引用 134

5.1.2 堆栈的实现 135

5.2 无锁的FIFO队列 137

5.2.1 流程如何运作 140

5.2.2 无锁队列 141

5.2.3 ABA问题 147

5.3 并发的哈希算法 152

5.3.1 add(v)方法 153

5.3.2 contains(v)方法 156

5.4 大锁的方法 157

5.5 锁条纹设计模式 159

5.6 本章小结 162

第6章 函数式并发模式 163

6.1 不变性 164

6.1.1 不可修改的包装器 165

6.1.2 持久数据结构 167

6.1.3 递归和不变性 169

6.2 future模式 170

6.2.1 apply方法 171

6.2.2 future——线程映射 173

6.2.3 future模式是异步的 174

6.2.4 糟糕的阻塞 177

6.2.5 函数组合 179

6.3 本章小结 182

第7章 actor模式 183

7.1 消息驱动的并发 183

7.1.1 什么是actor 185

7.1.2 状态封装 189

7.1.3 并行性在哪里 190

7.1.4 未处理的消息 192

7.1.5 become模式 193

7.1.6 让它崩溃并恢复 197

7.1.7 actor通信——ask模式 199

7.1.8 actor通信——tell模式 204

7.1.9 pipeTo模式 205

7.2 本章小结 207