2013-03-22 9 views
0

Windows 용 C 언어로 (아주 작은) 웹 서버를 쓰고 있습니다. 파일 읽기 및 쓰기에 모두 독점 잠금 파일이 필요합니다. 잠금 등에 관한 msdn 설명서를 읽었으며 구조의 LockFileEx 구조와 Event hEvent을 찾았습니다. 어떻게 작동합니까? 질문은 다음과 같습니다. : - 웹 서버에서 우리는 파일이 많습니다. 스레드가이 파일의 요청이 있었기 때문에 "test.txt"(배타적 잠금) 파일을 잠글 때 어떻게 얻을 다른 스레드를 동기화 할 수 있습니까? 같은 파일에 대한 잠금?Windows 용 독점 잠금 파일 c 웹 서버

감사합니다.

+1

잠금을 사용하면 파일을 잠그지 않고 파일에 동기화 할 수 있습니다. – xjdrew

답변

0

뮤텍스 개체의 사용을 살펴보십시오. 그들은 당신을 위해 그 문제를 해결해야합니다.

잠금 파일에 액세스해야하는 스레드는 잠금 파일을 요청하고 큐에 대기 할 수 있습니다. 현재 스레드가 완료되면 잠금을 해제하고 다음 요청 스레드에 잠금이 부여됩니다.

+0

하지만이 방법으로는 스레드가 열려고하는 각 파일에 뮤텍스가 필요합니까? 그리고 만약 그렇다면, 모든 뮤텍스를 메모리에 저장해야합니까? 권리? – user2199646

+0

음 ... 서버가 클라이언트에 전달하기 위해 파일을 읽는 동안 파일이 쓰기 가능하거나 변경 될 수있는 경우가 아니면 잠금이 필요 없습니다. 그렇지 않으면 읽기 전용 파일에서 잠금을 요청할 이유가 없습니다. 즉, 예 및 아니오 ... 신청서에 따라 달라질 것입니다. 디렉토리 당, 서비스 당 또는 기타 여러 가지 최적화를 사용하여 뮤텍스를 사용할 수는 있지만 디자인과 애플리케이션에 의해 좌우됩니다. –

+0

예, 문제는 모든 파일에 대해 읽기/쓰기에 독점 액세스가 필요하다는 것입니다. – user2199646