ClojureのSTMのロールバックの数を確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4792197

  •  24-10-2019
  •  | 
  •  

質問

ClojureのSTMのロールバックの数を確認するにはどうすればよいですか?

役に立ちましたか?

解決

あなたはできません...あなたがチートしたいと思っていない限り:

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

次に、ドシンをスパイドシンクに置き換えます。

他のヒント

あなたが狂気を感じているなら、あなたはClojureのソースをハッキングして再構築することができます(それは 簡単 Clojureソースを再構築する)。トランザクションレトリは、src/jvm/clojure/lang/lockingtransaction.java in the Run()メソッドで発生します。そこには、完了またはretry_limitまで行く大きなループがあります。ループが終了するときのiの値は、再試行カウントである必要があります。

STMストレスがあります テスト Chris Houserが役立つ可能性があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top