我需要对ref进行一些更新,但是当ref没有被大量使用时,我想选择一个时间来执行更新。有没有一种方法可以编程告诉ref何时进行交易?
答案 0 :(得分:4)
你可以add-watch
每次写你的ref时都会更新访问时间(你提到它主要是写)。这将为您提供忙碌的启发。
(def my-ref (ref {}))
(def my-ref-atime (atom 0))
(add-watch my-ref (fn [key ref old new] (swap! my-ref-atime current-time-fn))))
然后在过去atime超过10ms时才执行低优先级工作。
答案 1 :(得分:4)
您可能会要求单个身份做太多。考虑具有两个身份:一个具有高写入量,另一个(可能是派生的)身份偶尔更新。
您的方法已经暗示偶尔的更新不是裁判时间表的一部分,因为您愿意推迟更新。
答案 2 :(得分:1)