第1章 概述 1
1.1 并发还是并行? 1
1.2 并行架构 3
1.3 并发:不只是多核 5
1.4 七个模型 6
第2章 线程与锁 7
2.1 简单粗暴 7
2.2 第一天:互斥和内存模型 8
2.3 第二天:超越内置锁 17
2.4 第三天:站在巨人的肩膀上 27
2.5 复习 38
第3章 函数式编程 41
3.1 若不爽,就另辟蹊径 41
3.2 第一天:抛弃可变状态 42
3.3 第二天:函数式并行 51
3.4 第三天:函数式并发 61
3.5 复习 70
第4章 Clojure之道——分离标识与状态 73
4.1 混搭的力量 73
4.2 第一天:原子变量与持久数据结构 73
4.3 第二天:代理和软件事务内存 84
4.4 第三天:深入学习 92
4.5 复习 98
第5章 Actor 100
5.1 更加面向对象 100
5.2 第一天:消息和信箱 101
5.3 第二天:错误处理和容错性 111
5.4 第三天:分布式 120
5.5 复习 132
第6章 通信顺序进程 135
6.1 万物皆通信 135
6.2 第一天:channel和go块 136
6.3 第二天:多个channel与IO 146
6.4 第三天:客户端CSP 157
6.5 复习 164
第7章 数据并行 167
7.1 隐藏在笔记本电脑中的超级计算机 167
7.2 第一天:GPGPU编程 167
7.3 第二天:多维空间与工作组 177
7.4 第三天:OpenCL和OpenGL——全部在GPU上运行 187
7.5 复习 194
第8章 Lambda架构 196
8.1 并行计算搞定大数据 196
8.2 第一天:MapReduce 197
8.3 第二天:批处理层 208
8.4 第三天:加速层 218
8.5 复习 229
第9章 圆满结束 231
9.1 君欲何往 231
9.2 未尽之路 232
9.3 越过山丘 234
参考书目 235