2011-01-25 7 views

उत्तर

17

आप नहीं कर सकते हैं ... जब तक आप को धोखा देने के लिए तैयार हैं:

(defmacro spy-dosync [& body] 
    `(let [retries# (atom -1) 
     result# (dosync 
        (swap! retries# inc) 
        [email protected])] 
    (println "retries count:" @retries#) 
    result#)) 

और उसके बाद एक जासूस-dosync करके अपने dosync बदलें।

5

यदि आप निराश महसूस कर रहे हैं, तो आप क्लोजर स्रोत को पुनर्निर्माण कर सकते हैं और पुनर्निर्माण (यह क्लोजर स्रोत पुनर्निर्माण के लिए easy है)। ट्रांज़ेक्शन रीट्री रन() विधि में src/jvm/clojure/lang/lockingTransaction.java में होती है। वहाँ लूप के लिए एक बड़ा है जो पूरा या RETRY_LIMIT तक चला जाता है। जब लूप निकलता है तो मेरा मूल्य पुन: गणना होना चाहिए।

2

एसटीएम तनाव test क्रिस हाउसर द्वारा लिखित जो उपयोगी हो सकता है नहीं है

संबंधित मुद्दे