2011-11-14 19 views
8

Bir Clojure programının davranışını C'deki kilitleme sürümüyle karşılaştırmak istiyorum. İzlemek istediğim bir metrik, Clojure programım için iptal edilen toplam işlem sayısıdır.Clojure'da iptal edilen işlemleri sayma

tek sorun ben olduğum işlem bağlamı dışında bir değişken mutasyona edemezler Ne yapmaya çalışıyorum şudur:. Elbette

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

, total_aborts olacak İşlem bitmezse asla artmaz !!! Peki bunu nasıl yapabilirim? Teşekkürler!

+0

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

cevap

6

Sen my-num ve total-abortsatoms yapıp swap! yerine alter kullanabilirsiniz.

+0

Teşekkürler! Atomlar hakkında unutmuştum. – Timoteo

İlgili konular