2017-12-08 16 views
0

디렉토리의 파일에 read, writedelete과 같은 작업을 수행하는 Python script이 있습니다. 이러한 작업을 수행하기 전에 os.listdir이 완료되어 파일 목록을 가져옵니다. 파일이 무작위로 선택되고 작업이 수행됩니다.여러 프로세스가 동일한 디렉토리에서 파일을 읽거나 삭제하려고 할 때 경쟁 조건

하지만 스크립트의 여러 인스턴스를 실행해야합니다. 경쟁 상황이 발생할 가능성이 있습니다. 다른 인스턴스가 여전히 파일을 읽으려고 시도하는 동안 인스턴스가 파일을 삭제할 수 있습니다.

이 문제를 극복하는 좋은 방법은 무엇입니까?

답변

0

먼저 중요한 영역을 식별해야합니다. 그런 다음 세마포어로 보호해야합니다. 이것은 운영 체제에서 제공하는 잠금 파일 또는 실제 세마포어가 될 수 있습니다.

중요한 문제는 중요한 영역을 가능한 적게 (시기 적절하게) 유지하는 것입니다.

스크립트 자체를 보호하기 만하면되기 때문에 단일 세마포어가이를 수행해야합니다. 그러나 둘 이상의 세마포어가 필요하면 한 번에 둘 이상을 사용하지 말거나 잠재적 인 교착 상태가 발생하지 않도록 매우주의하십시오.

0

올바른 방법은 올바른 동작을 결정하는 것입니다. 이것들은 파일 및 데이터베이스 관리의 고전적인 문제이므로 먼저 명확한 정책이 필요합니다.