좋습니다. 일부 배경이 먼저 표시됩니다. 우리는 프로세스 간 리더/라이터 잠금 장치가 필요했습니다. 우리는 파일을 사용하고 LockEx와 UnlockEx를 사용하여 첫 번째 바이트를 잠그기로 결정했습니다. 클래스는 시스템 temp 폴더가 생성 될 때 시스템 temp 폴더에 파일을 만듭니다. 파일은 읽기 쓰기 액세스 및 공유 읽기 | 쓰기 | 삭제로 작성됩니다. 또한 DeleteOnClose를 지정하여 많은 임시 파일을 놓아 두지 않습니다. 분명히 AcquireReader와 AcquireWriter는 적절한 플래그로 LockEx를 호출하고 ReleaseLock은 UnlockEx를 호출합니다.
몇 가지 인스턴스를 실행할 수 있고 완벽하게 작동하는 작은 응용 프로그램을 사용하여이 클래스를 테스트했습니다. 이 응용 프로그램을 사용하는 응용 프로그램에는 문제가 있습니다.이 응용 프로그램은 다른 작은 응용 프로그램에서 다시 생성 할 수 있습니다. 의사 코드에서는프로세스 간 판독기 기록기 잠금 (또는 파일 핸들 및 액세스가 거부 됨)
Create InterProcessReaderWriter Dispose InterProcessReaderWriter without acquiring any locks Launch a child process which takes a reader lock
처음 실행하면 정상적으로 작동합니다. 다시 실행하려고하면, 처음부터 자식 프로세스가 여전히 잠금을 유지하고있는 동안 파일을 열려고하면 UnauthorisedAccessException이 발생합니다.
공유 권한 위반 문제는 아니지만이 테스트 사례의 모든 프로세스가 동일한 사용자로 실행되고 있습니다. 여기있는 사람 중에 아이디어가 있습니까?
나는 뮤텍스와 세마포어를 사용하여 우리가 원하는 것을 달성 할 것을 제안하는 다른 질문에 주목했습니다. 우리의 구현을 바꿀 수도 있지만 여전히이 문제의 원인을 알고 싶습니다.
동일한 파일에 액세스하려고합니다. 우리는 .ldb 파일로 액세스가 작동하는 것과 비슷한 것을 구현하려고합니다. 그러나 첫 번째 바이트가 아닌 경우 파일 당 하나의 잠금 만 있습니다. – pipTheGeek