【发布时间】:2010-05-15 06:59:16
【问题描述】:
根据书Programming Clojure refs 管理对共享状态的协调同步更改,而原子管理对共享状态的非协调同步更改。
如果我理解正确,“协调”意味着多个更改被封装为一个原子操作。如果是这种情况,那么在我看来,协调只需要使用 dosync 调用。
例如有什么区别:
(def i (atom 0))
(def j (atom 0))
(dosync
(swap! i inc)
(swap! j dec))
和:
(def i (ref 0))
(def j (ref 0))
(dosync
(alter i inc)
(alter j dec))
【问题讨论】:
标签: clojure