alter和ref set是否都更新Clojure中的STM树?
我在Clojure代码中到处都使用ref,然后我意识到我到处都在使用alter和ref set是否都更新Clojure中的STM树?,clojure,stm,Clojure,Stm,我在Clojure代码中到处都使用ref,然后我意识到我到处都在使用ref set。这会破坏STM中的更改历史吗?或者我应该只使用alter和ref set来初始化ref吗 我不确定这种差异是否仅仅是语法上的,而且alter最终还是调用了ref set。有人能启发我吗 (alter aref f arg1 ... argn) 基本上与 (ref-set aref (f @aref arg1 ... argn)) 类似于原子的reset和交换 基本上与 (ref-set aref (f @ar
ref set
。这会破坏STM中的更改历史吗?或者我应该只使用alter
和ref set
来初始化ref吗
我不确定这种差异是否仅仅是语法上的,而且alter
最终还是调用了ref set
。有人能启发我吗
(alter aref f arg1 ... argn)
基本上与
(ref-set aref (f @aref arg1 ... argn))
类似于原子的reset代码>和交换代码>
基本上与
(ref-set aref (f @aref arg1 ... argn))
类似于原子的reset代码>和交换代码>我想交换!是线程安全和重置!不是吗,还是我弄错了?STM的全部目的是解决并发问题,您提到的所有函数都是线程安全的。@skuro。好的,谢谢你确认重置!交换!你是我想交换的!是线程安全和重置!不是吗,还是我弄错了?STM的全部目的是解决并发问题,您提到的所有函数都是线程安全的。@skuro。好的,谢谢你确认重置!交换!是线程安全的