4
내 프로젝트에서 많은 클라이언트가 서버의 맵을 수정합니다.기존 기능을 새 클래스에 적용하는 방법은 무엇입니까?
(def dict (ref {})) ; the map we play with
을 그리고 dosync
의 STM 방법을 사용하여이 맵을 업데이트 :이 같은 map
의 ref
사용합니다.
user=> (time (dotimes [n 1000000] (dosync (alter xx assoc xx 1 1))))
"Elapsed time: 2470.766 msecs"
그래서 내가 Clojure에 구축 된지도 및 STM의 자리를 차지할 기본 자바 CuncurrentHashMap을 사용하기로 결정 :하지만 내가 원하는대로되지 빨리 발견했다. Java CuncurrentHashMap을 Clojure로 랩핑하여 Clojure 맵 (assoc 포함)을 수정할 수 있도록하려면 어떻게해야합니까?, dissoc 등이 있습니다. 이렇게하면 코드 줄을 수정하지 않게됩니다.
이 방법이 있습니까?