我想分析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永远不会增加!那我该怎么做呢?谢谢!