《七周七并发模型》介绍了七种并发模型,行文通俗易懂,有数量充足且设计精良的样例来帮助读者理解。Paul将引领你学习多种非常不同的技术,从一些社交平台使用的Lambda架构,到现在世界上许多最可靠的电信系统使用的actor模型。你还会学到职业高手使用的编程语言,从Java到Clojure,再到基于Erlang的闪亮新秀Elixir。书中每一章都设计成三天的阅读量。每天阅读结束都会有相关练习,巩固并扩展当天的知识。每一章均有复习,用于概括本章模型的优点和缺陷。
第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
★基于锁和线程的并发模型是目前最常用的一种并发模型,但是并发编程模型不仅仅只有这一种,本书几乎涵盖了目前所有的并发编程模型。了解和熟悉各种并发编程模型,在解决并发问题时会有更多思路。
——方腾飞,并发编程网站长
★当看到这本书的目录时,我就为之一振。它涉及了当今所有的主流并发编程模型(当然也包括Go语言及其实现的CSP模型)。而在品读之后,我更是有一些激动。其中的大部分章节都深入浅出地描述了某一个并发编程模型的概念、特点、机理以及适用领域。加之有大量相应实现语言的示例呈现,更是让这些模型活灵活现、极易理解。另外,各章之间的衔接会使你更容易把这些知识融会贯通。总之,并发编程乃现代编程技能的必备,而这本书则为并发编程的首选佳作。
——郝林(@特价萝卜),《Go并发编程实战》作者
★几十年来,专业的程序员一直在用线程与锁模型来进行并行和并发,但这仅仅是《七周七并发模型》介绍的众多模型之一。当今主流语言都竞相支持不同的并发模型,例如CSP模型、数据并行、函数式编程和Clojure的unified succession model。如果你想紧跟时代,我推荐阅读本书。
——Stuart Halloway,Cognitect联合创始人
★随着计算机拥有越来越多的核,理解并发技术变得愈发重要。本书介绍了为什么函数式编程会与并发有关、如何利用actor模型编写分布式软件、怎样利用GPU实现并行处理以及大数据的相关内容。通过阅读本书,你可以充实自己的知识库,为未来数年做好准备。
——José Valim,Plataformatec联合创始人
★这是个变革的时代,每个程序员都应学会并发编程的思维方式。如果你问我“应当如何适应这个并发的时代”,我会推荐阅读本书,因为我从中受益良多。
——Andrew Haley,Red Hat公司首席Java工程师
★随着阿姆达尔定律开始取代摩尔定律的地位,面向并发编程也逐渐开始取代面向对象编程的地位。本书的问世恰逢其时。Paul在书中详尽介绍了最重要的几种并发模型,足以帮助读者选择最适合的并发模型。如果你要开发与多核相关的软件,我推荐必读本书。
——Francesco Cesarini,Erlang Solutions创始人、技术总监
★我与Paul有过多次合作,我确信他是编程语言设计和结构方面的专业。并发是现代软件工程上非常重要但又容易被误读的主题,本书清晰阐述了这个主题。
——Ben Medlock,SwiftKey联合创始人、CTO