4
在我的項目中,許多客戶端將修改服務器中的地圖。我用的map
一個ref
,像這樣:如何將現有功能應用於新班級?
(def dict (ref {})) ; the map we play with
我更新使用dosync
,該STM方式本地圖。但我發現它沒有那麼快,因爲我想:
user=> (time (dotimes [n 1000000] (dosync (alter xx assoc xx 1 1))))
"Elapsed time: 2470.766 msecs"
所以我決定使用本地Java CuncurrentHashMap採取的Clojure的建設,在地圖和STM的地方。如何將Java CuncurrentHashMap封裝到Clojure中,以便我可以像Clojure地圖一樣修改它,使用assoc,contains,?dissoc等等。這將使我修改最少的代碼。
有沒有辦法做到這一點?