我需要对引用进行一些更新,但我想选择在引用不大量使用时执行更新的时间。有没有一种方法可以以编程方式判断引用何时处于事务中?
最佳答案
你可以<a href="http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/add-watch" rel="noreferrer noopener nofollow">add-watch</a>
每次写入您的引用时都会更新访问时间(您提到它主要是写入的)。这会让你变得忙碌起来。
(def my-ref (ref {}))
(def my-ref-atime (atom 0))
(add-watch my-ref (fn [key ref old new] (swap! my-ref-atime current-time-fn))))
然后只在atime过去10ms以上时才做低优先级的工作。
关于clojure - 如何判断 Clojure 中的 dosync 是否正在更新引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583860/