我有一些更新需要提交給裁判,但我想選擇一個時間來執行更新時裁判不在大量使用。有沒有一種方法可以通過編程方式告訴ref何時處於交易中?如何判斷ref是否由Clojure中的dosync更新?
3
A
回答
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
這聽起來像你想執行更新,但你不關心更新實際發生的時間(只要他們最終發生)。這正是agents
用於:以異步和獨立的方式共享狀態。 Refs
用於以同步和協調的方式共享狀態。
構造應用程序邏輯是否屬於交易對我來說聽起來不是個好主意。也許如果你提供更多的細節,人們可以想出更好的設計。
4
你可能會問一個單一的身份做太多。考慮有兩個身份:一個具有較高的寫入量,另一個(可能是派生的)身份偶爾會更新。
你的方法已經暗示偶爾的更新不是參考文獻時間表的一部分,因爲你願意推遲它們。
相關問題
- 1. 如何判斷更新語句在pysqlite 2.6.3中是否成功
- 2. 如何判斷ClickOnce應用程序是否剛剛更新?
- 3. 如何在Clojure的ref map中更新記錄?
- 4. 如何判斷itemscontrol datatemplate中的item是否最新?
- 5. 如何判斷Backbone.js中的模型是否未更改?
- 6. 如何判斷頁面是否由JSP生成?
- 7. 如何判斷sys.stdout是否已在Python中刷新
- 8. 如何判斷基於NetTcp的WCF連接是否中斷?
- 9. 如何判斷soundmanager2是否使用html5?
- 10. 如何判斷加載是否有效?
- 11. 如何判斷W鍵是否按下
- 12. 如何判斷碼頭是否凍結?
- 13. 如何判斷UITextView是否髒?
- 14. 如何判斷AUCTeX是否可用?
- 15. 如何判斷UITextField是否爲firstResponder
- 16. 如何判斷DataRow是否髒
- 17. 如何判斷對象是否爲空?
- 18. 如何判斷MemberInfo是否爲內部
- 19. 如何判斷NSUserDefaults是否已保存?
- 20. 如何判斷GIF是否爲動畫?
- 21. 如何判斷NSManagedObject是否已保存?
- 22. 如何判斷AirPlay是否爲鏡像?
- 23. 如何判斷UIPrintInteractionController是否顯示?
- 24. 我如何判斷ajax是否工作?
- 25. 如何判斷網頁是否存在?
- 26. 如何判斷Java類是否抽象?
- 27. 如何判斷是否使用glibc
- 28. Selenium/Phantomjs:如何判斷是否導航?
- 29. 如何判斷iOS應用程序是否已新安裝或更新?
- 30. 如何判斷一個字符是用Clojure
正確和簡單。當我看到這個答案時,就是其中的一個「爲什麼我沒有想到這個!」時刻。謝謝! – Zubair 2011-04-07 20:11:31