Clojure并发编程:原子、锁、代理与事务的深入解析
1. 原子(Atom)的监控与使用
1.1 监控原子的变化
在Clojure中,我们可以使用 add - watch 函数来监控原子的变化。以下是一个示例代码:
(def state (atom {}))
(defn state-change [key atom old new]
(prn (format "key: %s, atom: %s, old val: %s, new val %s" key atom old new)))
(add-watch state :foo state-change)
(swap! state assoc :bar "baz")
当我们对 state 原子进行修改时, add - watch 所绑定的 state - change 函数会被触发,输出变化的信息。输出结果如下:
"key: :foo, atom: clojure.lang.Atom@3e1b3567,
old val: {}, new val: {:bar \"baz\"}"
{:bar "baz"}
如果要移除监控,可以使用 (remove - watch atom key) 函数,将 atom 和 key 替换为相应的值。
超级会员免费看
订阅专栏 解锁全文
89

被折叠的 条评论
为什么被折叠?



