2011-11-14 7 views
8

ClojureプログラムとCのロックバージョンの動作を分析したいと思います。私が追跡したい1つのメトリックは、Clojureプログラムの中止されたトランザクションの総数です。Clojureの中断されたトランザクションのカウント

唯一の問題は私がやろうとしていることはこれである私は、私は午前トランザクションのコンテキストの変数外を変異させることができないということです。もちろん

(dosync 
(try 
    (alter my_num inc) 
    (catch Throwable t 
    (do 
     (alter total_aborts inc) 
     (println "Caught " (.getClass t)) 
     (throw t))))) 

、total_abortsます。トランザクションが終了しない場合、増分されません!!!だから私はこれをどのようにすることができますか?ありがとう!

+0

http://stackoverflow.com/questions/4792197/how-can-i-see-the-number-of-rollbacks-in-my-stm-in-clojure –

答えて

6

my-numtotal-abortsatomsとし、alterの代わりにswap!を使用できます。

+0

ありがとう!私は原子について忘れていました。 – Timoteo

関連する問題