기회 잠금 풀기
기회 잠금 풀기는 한 클라이언트가 파일에 가지고 있는 잠금을 저하하여 다른 클라이언트가 기회 잠금을 사용하거나 사용하지 않고 파일을 열 수 있도록 하는 프로세스입니다. 다른 클라이언트가 열기 작업을 요청하면 서버는 열기 작업을 지연시키고 편의적 잠금을 보유한 클라이언트에 알립니다.
그러면 잠금을 보유한 클라이언트는 읽기 버퍼 중단, 파일 닫기 등 잠금 유형에 적합한 작업을 수행합니다. 편의적 잠금을 보유하는 클라이언트가 이것이 완료되었다고 서버에 알려주었을 때만 서버가 열기 작업을 요청하는 클라이언트에 대해 파일을 엽니다. 그러나 수준 2 잠금이 끊어지면 서버는 클라이언트에 이 잠금이 손상되었음을 보고하지만, 서버에 플러시할 캐시된 데이터가 없으므로 승인을 기다리지 않습니다.
단독 잠금(필터, 수준 1 또는 일괄 처리)의 중단을 승인할 때 손상된 잠금 소유자는 다른 배타적 잠금을 요청할 수 없습니다. 수준 2 잠금에 대한 배타적 잠금의 성능이 저하되거나 잠금이 전혀 해제되지 않을 수 있습니다. 소유자는 어떤 식으로든 파일을 닫을 때 일반적으로 잠금을 해제하고 파일을 닫습니다.
애플리케이션은 잠금이 끊어진 파일과 연결된 OVERLAPPED 구조의 hEvent 멤버를 사용하여 편의적 잠금이 끊어졌다는 알림을 받습니다. 애플리케이션은 GetOverlappedResult 및 HasOverlappedIoCompleted와 같은 함수를 사용할 수도 있습니다.