clojure - 如何判断 Clojure 中的 dosync 是否正在更新引用?

标签 clojure

我需要对引用进行一些更新,但我想选择在引用不大量使用时执行更新的时间。有没有一种方法可以以编程方式判断引用何时处于事务中?

最佳答案

你可以<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/

相关文章:

Clojure:使用散列作为函数可以吗?

clojure - 按契约(Contract)库为 Common Lisp 设计?

scala - Scala/Groovy/Clojure 中的 GUI

json - 在 clojure 中使用嵌套映射/向量结构的惯用且简洁的方式

clojure - 令人困惑的Clojure编译错误-错误的行报告?

events - Clojure - 等待文件中的更改

clojure - 重新构建数据库组织

Clojure 程序读取自己的 MANIFEST.MF

regex - 在 Clojure 中忽略区分大小写

clojure - 为什么 dotrace 会在这里抛出 StackOverflowError?