Erlang에는 flock과 같은 프로세스 간 (Linux 또는 Windows 프로세스를 의미 함) 잠금 메커니즘이 있습니까?프로세스 간 잠금 메커니즘 (예 : flock)
다음과 같이 사용은 다음과 같습니다
- 얼랑 서버가 저장소를 제공하는 시작하고, 경우 파일 잠금 (또는 무엇이든)
- 을두고 다른 OS 공정 (다른 얼랑 서버 또는 명령 행 Erlang 스크립트)가 repo와 상호 작용하면 파일 충돌로 인해 충돌 가능성이 경고됩니다.
Erlang에는 flock과 같은 프로세스 간 (Linux 또는 Windows 프로세스를 의미 함) 잠금 메커니즘이 있습니까?프로세스 간 잠금 메커니즘 (예 : flock)
다음과 같이 사용은 다음과 같습니다
Erlang 프로세스 사이에 있음을 의미하는 경우 프로세스 간 잠금 메커니즘이 있습니다. 이것은 공유 자원에 대한 액세스를 제어하는 Erlang의 방식이 아닙니다. 일반적으로 리소스에 대한 액세스를 제어하려면 리소스를 관리하는 Erlang 프로세스가 있으며이 프로세스를 통해 리소스에 대한 모든 액세스가 이루어집니다. 즉, 액세스를 제어하기 위해 프로세스 간 잠금 또는 뮤텍스가 필요하지 않습니다. 또한 "속임수"를 쓰지 않고 액세스 할 수 있기 때문에 안전합니다. 트랜잭션 처리 도중에 클라이언트가 죽는다면 관리 프로세스에서이를 감지 할 수 있습니다.
귀하의 요구에 맞는 모듈 global
가 있습니다.
는 LockRequesterId에 대한의 ResourceId에 지정된 노드 (또는 지정하지 않은 경우 모든 노드)에 대한 잠금을 설정합니다.
global:set_lock/1,2,3
얼랑 (Erlang)에서는 아마도이 문제를 해결하는 다른 방법을 사용하게 될 것입니다. 한 가지 기억해야 할 것은 모든 저장소를 처리하는 Erlang을 하나만 유지하는 것입니다. node()
. 리소스 잠금 관리를 수행하는 프로세스는 lock_mgr
입니다.
다른 노드 또는 escript가 실행되기를 원할 때, 실행중인 Erlang 노드에 배포를 통해 연결하고 잠금을 요청할 수 있습니다.
나는 OS 프로세스를 의미했습니다. 내 질문을 업데이트하고 세부 정보를 추가하겠습니다. – user803422