문제

작업을 읽기 작업 (예 : 조회) 및 쓰기 작업 (예 : 삽입, 제거)으로 분류 할 수있는 데이터 구조가 있습니다. 이러한 작업은 다음과 같이 동기화되어야합니다.

  • 쓰기 작업이 실행되는 동안 (동일한 스레드에 있지 않는 한) 읽기 작업은 실행할 수 없지만 다른 읽기 작업과 관련하여 읽기 작업을 동시에 실행할 수 있습니다.
  • 읽기 또는 쓰기 작업이 실행되는 동안 (동일한 스레드에 있지 않으면) 쓰기 작업은 실행할 수 없습니다.

이러한 종류의 동기화를 어떻게 구현할 수 있습니까?

플랫폼은 Win-API이므로 API의 동기화 객체 및 인터 로크 함수가 기본 빌딩 블록입니다.

도움이 되었습니까?

해결책

Microsoft가 독자/작가 잠금 장치의 권장 구현이 여기에 있습니다 (헤더 "Reader/Writer Locks"에 약간 스크롤해야합니다) :

http://msdn.microsoft.com/en-us/library/ms810427.aspx

참고로, 같은 질문이 있지만 .NET의 사치를 가진 사람들을 위해 :

http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top