ClojureのSTMでのロールバックの数を確認するにはどうすればよいですか?
質問する
465 次
3 に答える
18
カンニングをする気がなければ...できません:
(defmacro spy-dosync [& body]
`(let [retries# (atom -1)
result# (dosync
(swap! retries# inc)
~@body)]
(println "retries count:" @retries#)
result#))
次に、dosyncをspy-dosyncに置き換えます。
于 2011-01-25T11:16:19.287 に答える
5
気が狂っている場合は、Clojureソースをハックして再構築できます(Clojureソースを再構築するのは簡単です)。トランザクションの再試行は、run()メソッドのsrc / jvm / clojure / lang/LockingTransaction.javaで発生します。完了またはRETRY_LIMITまで続く大きなforループがあります。ループが終了するときのiの値は、再試行回数である必要があります。
于 2011-01-25T15:02:04.827 に答える
2
クリスハウザーによって書かれたSTMストレステストがあり、これは役に立つかもしれません
于 2011-01-26T16:21:55.167 に答える