2012-10-24 6 views
1

Erlang ETS 테이블을 서로 다른 프로세스간에 공유 할 수 있습니까? 따라서, 두 개의 프로세스가 다른 Erlang 실행 시스템에서 실행중인 경우, 어떻게하면 하나의 ETS 테이블에서 수행하는 모든 변경 사항이 다른 프로세스에 반영 될 수 있도록 연결할 수 있습니까?Erlang 공유 ETS 테이블

+0

http://yarivsblog.blogspot.com/2008/05/erlang-does-have-shared-memory.html을 보시기 바랍니다. – halfelf

답변

9

단일 얼랭 노드 내에서 옵션을 ets:new으로 전달하면 ETS 테이블을 완전히 공유 할 수 있습니다. (상속인을 설정하지 않았다면 주인이 죽으면 테이블이 파괴 될 것입니다.)

여러 Erlang 노드에서 테이블을 공유해야하는 경우 Mnesia를 사용해야합니다.

+0

ETS 테이블을 사용하여 다른 노드. 업데이트 집중적 인 작업에서 훨씬 느려지므로 Mnesia는 고려하지 않았습니다. – Dan

+2

내가 아는 한, Mnesia는 ETS와 DETS 위에 세워졌습니다. 따라서 응용 프로그램을 사용자 지정 구현보다 속도를 늦추지 않아도되지만 견고 함과 설명서가 필요합니다. 누군가가 사용할 트랜잭션 선택에 대한 조언을 줄 수 있습니다 (동기화/비동기, 더티 또는 아님). – Pascal

4

다른 노드의 프로세스간에 ETS 테이블을 "공유"할 수 없으며, ETS 테이블은 노드가 생성 된 노드의 프로세스에서만 액세스 할 수 있습니다. ETS 테이블을 공유하려면 한 노드에서 프로세스를 생성하고이 프로세스를 통해 다른 노드에서 테이블에 액세스해야합니다. 정말로 그렇게 어렵지는 않습니다.

관련 문제