整理了旧文《Clojure并发》到我的知识库上,更适合阅读,有兴趣可以移步看下.
Clojure处理并发的思路与众不同,采用的是所谓STM的模型——软件事务内存。你可以将STM想象成数据库,只不过是内存型的,它只支持事务的ACI,也就是原子性、一致性、隔离性,但是不包括持久性,因为状态的保存都在内存里。
Clojure的并发API分为四种模型:
- 管理协作式、同步修改可变状态的Ref
- 管理非协作式、同步修改可变状态的Atom
- 管理异步修改可变状态的Agent
-
管理Thread local变量的Var。
下面将对这四部分作更详细的介绍,除了用法之外,我们将深入到源码甚至Java字节码级别……