Я хотел бы проанализировать поведение программы Clojure по сравнению с версией блокировки на C. Одна метрика, которую я хотел бы отслеживать, - это общее количество прерванных транзакций для моей программы Clojure.
Единственная проблема заключается вчто я не могу изменить переменную вне контекста транзакции, в которой я нахожусь. Я пытаюсь сделать следующее:
(dosync
(try
(alter my_num inc)
(catch Throwable t
(do
(alter total_aborts inc)
(println "Caught " (.getClass t))
(throw t)))))
Конечно, total_aborts никогда не будет увеличен, если транзакцияне заканчивается !!!Так как я могу это сделать?Спасибо!