-
Notifications
You must be signed in to change notification settings - Fork 21
Seven Concurrency Models in Seven Weeks
- External Link:
- Douban Books: Seven Concurrency Models in Seven Weeks(豆瓣)
- Douban Books: 七周七并发模型(豆瓣)
- Rank: ★★★★★
- Hard: ★
- Tag: 并发,并行,分布式,Java,Clojure,Elixir,Go
- Reviews:
经常学习的人们,
肯定会遭遇过瓶颈,
迷茫,不知道做什么。
但是,瓶颈始终还是会过去的,
我们要做的是,尽量减少停滞的时间。
我的办法是,
遇到难以前进的障碍以后,
要尽快转移兴趣点,往另一个方向突飞猛进。
等在另一个方向小有收获后,
回头观望,会发现,原来的困难也不过如此。
言归正传。
这是一系列书,用七周来做一件事情,
《seven Languages in Seven Weeks》,
《Seven Web Frameworks in Seven Weeks》。
这些书非常适合开阔视野,
打开局面。
这本书名字是写7个并发模型,
其实从更高的角度考虑了并行计算和分布式系统。
并发是一个很热的话题,
随着Web技术的普及,更多人成为了Web产品的参与者。
因为现实世界本来就是并发的,
所以,Web成为了现实世界的写照。
另一方面,前端的交互设备变得更多样性了,
使得Web架构演变成前后端分离的形式,
后端要能提供并发服务,
这种要求越来越多。
Java,C#,PHP,采用了多线程的方式处理并发,
本书以Java为例,介绍了线程和锁的使用方法,
也以更高的视角说明了这种共享内存模型的优缺点。
例如,共享内存模型,并不直接支持并行计算,
对分布式系统也支持的不够好,
另外锁的处理也是很麻烦的一件事情。
与Java不同,函数式语言因为更好的维持不可变状态,
最近也越来越火,
这是有原因的,因为不可变的状态,天生就支持并发。
本书以Clojure为例,
介绍了,不可变量,原子量,软件事务内存,
可惜没有相关的Haskell介绍。
函数式语言门槛高,执行效率偏低,这也是它的弱点。
当然也不能一概而论。
然后说到了Actor模型,
这个模型其实是从最初的Smalltalk开始的,
后续的面向对象语言似乎走偏了路线,
这个模型被Erlang学去了。
本书以Erlang虚拟机上的语言Elixir为例,
介绍了Actor模型,其实相当于邮箱之间的通信。
消息保存在异步的队列中,
系统的各个组成部分互相发消息。
最后,提到了Go语言的Channel,
不过还是用Clojure讲的,估计作者对Go也不熟,或者其他什么原因,
本来我对Go印象不好,
但是发现它其实代表了一种并发模型,也对它肃然起敬了,
它用同步的Channel来进行通信。
后面,开始介绍显卡计算什么的,
不太感兴趣,所以没有看下去。
不过,本书仍然是一本好书。
开阔了我的视野,
磨平了我的成见,
让我找到了正确的方向。
非常推荐本书,
尤其是对各种语言都有兴趣的人。