1
我在我的Clojure代碼中隨處可用,然後我意識到我到處都在使用ref-set
。這是否會破壞STM的變化歷史?或者我應該只使用alter
和ref-set
來初始化ref?這兩個修改和ref-set更新Clojure中的STM樹?
我不確定這種差異是否僅僅是語法上的,而alter
最後總是調用ref-set
。有人能夠啓發我嗎?
我在我的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