여러 프로세스에서 사용할 공유 메모리를 만들려고합니다. 이러한 프로세스는 MPI
호출 (MPI_Send
, MPI_Recv
)을 사용하여 서로 통신합니다.더 나은 세마포어 또는 플록 이름 C linux
이 공유 메모리의 액세스를 제어하는 메커니즘이 필요합니다. 어제 MPI가이를 수행 할 수있는 기능을 제공하는지 확인하기 위해 질문을 추가했습니다. Shared memory access control mechanism for processes created by MPI이지만 MPI는 그러한 조항이 없다고 생각합니다.
그래서 named semaphore
또는 flock
중에서 선택해야합니다.
sem_cloe()
을 호출하지 않고 갑자기 프로세스가 중단되면 명명 된 세마포어의 경우 해당 세마포가 항상 남아 있고 ll /dev/shm/
으로 볼 수 있습니다. 이것은 때때로 교착 상태가 발생합니다 (동일한 코드를 다시 실행하면!), 이런 이유로 저는 현재 flock을 사용하려고합니다.
flock
이 이러한 유형의 작업에 가장 적합한 지 확인하고 싶습니까?
flock
의 단점이 있습니까?
여기서 사용할 수있는 named semaphore
과 flock
이외의 것이 있습니까?
나는 리눅스에서 C로 작업하고있다.
+1하지만 나는 그 '무리'를 추가하고 싶습니다. 비슷한 메커니즘이 확실히 좋은 선택이 아닙니다. 이들은 파일의 동시 사용을 보호하고 다른 용도로는 사용하지 못하도록 설계되었습니다. 특히, 파일에서 다른 것이 발생하지 않으면 파일 메타 데이터 (잠금과 같은)가 다른 프로세스에서 볼 수있을 때 지정되지 않습니다. 이것을 위해 설계되지 않은 목적으로 이것을 사용하지 마십시오. –