Skip to content

Seven Concurrency Models in Seven Weeks

thzt edited this page Jun 17, 2015 · 2 revisions

Book Information

Review by [thzt]

  • 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来进行通信。


后面,开始介绍显卡计算什么的,

不太感兴趣,所以没有看下去。


不过,本书仍然是一本好书。

开阔了我的视野,

磨平了我的成见,

让我找到了正确的方向。


非常推荐本书,

尤其是对各种语言都有兴趣的人。

Clone this wiki locally