2011-11-14 19 views
8

में निरस्त लेनदेन की गणना करना मैं सी में लॉकिंग संस्करण बनाम क्लोजर प्रोग्राम के व्यवहार का विश्लेषण करना चाहता हूं। एक मीट्रिक जिसे मैं ट्रैक करना चाहता हूं वह है मेरे क्लोजर प्रोग्राम के लिए निरस्त लेनदेन की कुल संख्या।क्लोजर

केवल समस्या यह है कि मैं लेनदेन है कि मैं में हूँ के संदर्भ के बाहर एक चर उत्परिवर्तित नहीं कर सकता है मुझे क्या करना कोशिश कर रहा हूँ यह है:।

(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-num और total-abortsatoms बनाने के लिए और swap! बजाय alter उपयोग कर सकते हैं।

+0

धन्यवाद! मैं परमाणुओं के बारे में भूल गया था। – Timoteo