7
필자는 erlang에 익숙하지 않으며 erlang은 동시성 지향 프로그래밍이며 변경 가능한 데이터 구조가 없으므로 병렬 처리가 쉽습니다.어떻게 erlang이 공유 리소스에 액세스합니까?
하지만 어쨌든 공유 리소스는 여전히 존재합니다 (예 : 동일한 파일에 쓰기). 이 경우, erlang은 두 프로세스간에 공유 리소스 액세스를 어떻게 동기화합니까?
필자는 erlang에 익숙하지 않으며 erlang은 동시성 지향 프로그래밍이며 변경 가능한 데이터 구조가 없으므로 병렬 처리가 쉽습니다.어떻게 erlang이 공유 리소스에 액세스합니까?
하지만 어쨌든 공유 리소스는 여전히 존재합니다 (예 : 동일한 파일에 쓰기). 이 경우, erlang은 두 프로세스간에 공유 리소스 액세스를 어떻게 동기화합니까?
일반적으로 수행 할 작업은 프로세스가 공유 리소스에 대한 액세스를 담당하는 것입니다. 다른 프로세스는 공유 자원에 정보를 읽거나 쓰는 요청에 대해 단일 관리자 프로세스에 메시지를 보냅니다.
일부 공유 리소스 (예 : 일부 유형의 ETS 테이블)는 여러 프로세스에서 읽을 수 있지만 하나의 프로세스 만 에을 쓸 수 있습니다. 그래서 당신은 하나의 프로세스를 설정하여 테이블에 대한 직렬 쓰기를 수행 할 수 있습니다.
또한 내 경험에 비추어 볼 때, 요청을 직렬화하는 책임이있는 프로세스는 종종 일반 서버 (gen_server)로 구현됩니다. http://www.erlang.org/doc/man/gen_server.html. –
ETS 테이블에 여러 작성자를 지정할 수 있습니다. 버킷 잠금 방식 인 IIRC를 사용하므로 다른 프로세스에서 쓰기 작업이 충돌하지 않는 한 상당히 빠릅니다. Tuple 공간은 ETS에 대한 좋은 비유입니다. –