:重新加载所有和现有的引用

时间:2011-03-21 06:09:50

标签: multithreading clojure reload

我刚刚发现:reload-all的一个有趣特征。说我有:

(defn clock-update [clock] (swap! clock (fn [previousTime] (+ previousTime 1) )  )   )
(def threads  (Executors/newScheduledThreadPool 16))
(defn start-clock [clock] 
        (. threads scheduleAtFixedRate 
        #(clock-update clock) 0 1 TimeUnit/SECONDS ))

和我(start-clock clock)时钟是我正在观看的原子,好吧,如果我改变原子交换!函数(例如,更改+ for - )在clock-update和(use :reload-all 'myns)然后猜测是什么,该函数用于更新现有线程的原子!我没想到。我认为现有的线程会继续引用它们构造的任何函数。

1 个答案:

答案 0 :(得分:1)

正如文档解释

  

def始终适用于根绑定,即使var在调用def的点处是线程绑定的。

相关问题