这两个修改和ref-set更新Clojure中的STM树?
问题描述:
我在我的Clojure代码中随处可用,然后我意识到我到处都在使用ref-set
。这是否会破坏STM的变化历史?或者我应该只使用alter
和ref-set
来初始化ref?这两个修改和ref-set更新Clojure中的STM树?
我不确定这种差异是否仅仅是语法上的,而alter
最后总是调用ref-set
。有人能够启发我吗?
答
(alter aref f arg1 ... argn)
是基本相同
(ref-set aref (f @aref arg1 ... argn))
用于与reset!
和swap!
原子的类似。
我以为交换!线程安全并重置!不是,还是我误解了? – Zubair 2011-04-14 08:12:56
STM的全部重点是解决并发问题,你提到的所有功能都是线程安全的。 – skuro 2011-04-14 08:29:17
@skuro。好的,谢谢你确认重置!并交换!是线程安全的 – Zubair 2011-04-14 08:40:14