2011-01-25 16 views

cevap

17

Bunu yapamazsın ... Eğer hile istekli olmadıkça:

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

ve sonra bir casus-dosync ederek dosync değiştirin.

5

Frisky hissediyorsanız, Clojure kaynağını kesebilir ve yeniden oluşturabilirsiniz (Clojure kaynağını yeniden oluşturmak için easy). İşlem yeniden denemeleri, run() yönteminde src/jvm/clojure/lang/LockingTransaction.java dosyasında gerçekleşir. Orada bitene kadar ya da RETRY_LIMIT için olan büyük bir döngü var. Döngünün çıktığı zaman i değeri yeniden deneme sayısı olmalıdır.

2

Chris Houser tarafından yazılmış STM-stress test var, hangisi yararlı olabilir

İlgili konular