clojure - 如何在Clojure的STM中查看回滚的数量?

标签 clojure stm

如何在Clojure的STM中查看回滚的数量?

最佳答案

你不能...除非你愿意作弊:

(defmacro spy-dosync [& body]
  `(let [retries# (atom -1)
         result# (dosync
                   (swap! retries# inc)
                   ~@body)]
     (println "retries count:" @retries#)
     result#))


然后将您的dosync替换为spy-dosync。

关于clojure - 如何在Clojure的STM中查看回滚的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792197/

相关文章:

multithreading - TMVar,但没有缓冲区?

reflection - 为什么 source-fn 在这种特定情况下找不到源代码?

Clojure:简洁地转发可选值

clojure - 为什么 Clojure 编译器不会因类型提示不正确而抛出错误?

clojure - clojure defn 参数不允许使用 ^char 类型提示

clojure - 无法使用 ns 中另一个命名空间的类 :gen-class

java - Clojure 银行账户汇款示例

concurrency - 原子与引用有何不同?

Clojure:atom 和 ref 的惯用用法?

clojure - 我应该如何使 clojure STM 程序持久化?