2011-04-14 24 views
1

我在我的Clojure代碼中隨處可用,然後我意識到我到處都在使用ref-set。這是否會破壞STM的變化歷史?或者我應該只使用alterref-set來初始化ref?這兩個修改和ref-set更新Clojure中的STM樹?

我不確定這種差異是否僅僅是語法上的,而alter最後總是調用ref-set。有人能夠啓發我嗎?

回答

4
(alter aref f arg1 ... argn) 

是基本相同

(ref-set aref (f @aref arg1 ... argn)) 

用於與reset!swap!原子的類似。

+0

我以爲交換!線程安全並重置!不是,還是我誤解了? – Zubair 2011-04-14 08:12:56

+2

STM的全部重點是解決併發問題,你提到的所有功能都是線程安全的。 – skuro 2011-04-14 08:29:17

+0

@skuro。好的,謝謝你確認重置!並交換!是線程安全的 – Zubair 2011-04-14 08:40:14