我有一些更新需要提交給裁判,但我想選擇一個時間來執行更新時裁判不在大量使用。有沒有一種方法可以通過編程方式告訴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. 如何判斷JavaScript是否導致更新面板更新?
- 2. 如何判斷更新語句在pysqlite 2.6.3中是否成功
- 3. 如何判斷在iOS項目中是否是新的一天?
- 4. 如何判斷數據庫更新是否成功?
- 5. 如何判斷ClickOnce應用程序是否剛剛更新?
- 6. 從Node.js更新MySQL - 如何判斷零行是否受影響?
- 7. 如何判斷npm是否完全更新
- 8. 如何判斷我的動作是否由RenderAction調用?
- 9. 如何判斷我的Android應用是否由InstrumentationTestRunner運行?
- 10. 如何在Clojure的ref map中更新記錄?
- 11. 如何判斷itemscontrol datatemplate中的item是否最新?
- 12. 使用由ref類型保護的Clojure core.cache是否安全?
- 13. 如何判斷「ZipArchiveEntry」是否是目錄?
- 14. 如何判斷Backbone.js中的模型是否未更改?
- 15. 如何判斷iPhone應用程序是否由PhoneGap創建?
- 16. 如何判斷點擊是否由觸摸觸發?
- 17. 如何判斷頁面是否由JSP生成?
- 18. 如何判斷sys.stdout是否已在Python中刷新
- 19. 如何判斷數據庫更新
- 20. 如何判斷android rawQuery更新成功?
- 21. 如何判斷基於NetTcp的WCF連接是否中斷?
- 22. 如何判斷是否有控制檯
- 23. 如何判斷NSUserDefaults是否已保存?
- 24. 如何判斷插座是否連接?
- 25. 如何判斷MIDIEndpointRef是否爲虛擬?
- 26. 如何判斷AirPlay是否爲鏡像?
- 27. 如何判斷HttpResponse是否已關閉?
- 28. 如何判斷editText是否在焦點?
- 29. 如何判斷UIPrintInteractionController是否顯示?
- 30. 如何判斷孩子是否爲零
正確和簡單。當我看到這個答案時,就是其中的一個「爲什麼我沒有想到這個!」時刻。謝謝! – Zubair 2011-04-07 20:11:31