使用单个值更新原子

时间:2010-06-17 23:21:36

标签: concurrency clojure atomic

我的代码中有许多原子,其中一个常见的要求是将它们更新为新值,而不管当前值如何。

因此我发现自己写的是这样的:

(swap! atom-name (fn [_] (identity new-value)))

这有效,但看起来很丑陋,可能会导致构建匿名闭包的性能损失。

有更好的方法吗?

2 个答案:

答案 0 :(得分:8)

reset!函数应该这样做。

(reset! atom-name new-value)

答案 1 :(得分:1)

您可以使用(比较并设置原子旧值新值)。

但我发现很奇怪你需要将它们改为不相关的值。你不能使用绑定或类似的东西。