Wie kann ich die Anzahl der Rollbacks in meinem STM in Clojure sehen?
Frage
Wie kann ich die Anzahl der Rollbacks in meinem STM in Clojure sehen?
Lösung
Sie können nicht ... es sei denn, Sie sind bereit zu betrügen:
(defmacro spy-dosync [& body]
`(let [retries# (atom -1)
result# (dosync
(swap! retries# inc)
~@body)]
(println "retries count:" @retries#)
result#))
und ersetzen Sie dann Ihre Dosync durch eine Spionagedosync.
Andere Tipps
Wenn Sie sich mürrisch fühlen, könnten Sie die Quelle der Clojure hacken und wieder aufbauen (es ist einfach Um die Quelle der Clojure wieder aufzubauen). Transaktionsüberschreitungen finden in der Methode src/jvm/clojure/lang/lockingTransaction.java statt. Es gibt eine große für die Schleife, die bis zum Abschluss oder Wiederieren_Limit geht. Der Wert von i, wenn der Schleifengänger die Wiederholungszahl sein sollte.
Es gibt STM-Stress Prüfung Geschrieben von Chris Houser, was nützlich sein könnte
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow