다양한 변경 가능한 데이터 (예 : 스크롤 위치, 사용자 데이터, 파일 이름, 선택된 도구 옵션 등)를 필요로하는 Swing + Clojure의 GUI 응용 프로그램에서 작업하고 있습니다. .지도에 대한 참조 대 다중 참조에 대한 매핑
I의 데이터 세트 처리 적어도 세 가지 방법으로 볼 수 있습니다
(def data (ref {
:filename "filename.xml"
:scroll [0 0] }))
개별 데이터에 심판의지도 만들기 :
모든 데이터의지도에 심판을 만들기를 요소 :
:(def datamap {
:filename (ref "filename.xml")
:scroll (ref [0 0]) }))
네임 스페이스의 각에 대해 별도의 심판 만들기
참고 :이 데이터는 동시에 액세스됩니다. 백그라운드 처리 thread 또는 Swing 이벤트 처리 thread. 그러나 여러 요소의 일관된 트랜잭션 업데이트가 필요하지는 않습니다.
추천 방법은 무엇이며 그 이유는 무엇입니까?
감사합니다. Michal, very interesting! 가장 좋은 모델은 실제로 원자 내부의 단일 맵일 수 있습니다. 나는 이것이 모든 동시성 요구 사항을 충족시키고 오버 헤드가 적어야한다고 말한 것처럼 생각합니다. – mikera
그럴 가능성이 매우 높습니다.또한 시작하는 것이 좋은 시점입니다. 올바른 코드를 작성하는 것이 쉬우 며 그렇게할만한 이유가있을 때 나중에 나눌 수 있습니다. –