C의 판독기/작성기 잠금: 자주 읽는 사용자를 위한 최적화
C에서 공유 데이터에 대한 동시 액세스를 관리하려면 효율적인 동기화 기술이 필요합니다. 자주 읽는 사람과 자주 쓰는 사람이 없는 주요 패턴이 있는 시나리오의 경우 판독기/작성기 잠금이 최적의 솔루션을 제공합니다.
표준 접근 방식(C 14 이상)
다음으로 시작 C 14, 표준 라이브러리는 리더/라이터 잠금 구현을 위한 std::shared_mutex 클래스를 제공합니다. 이를 통해 여러 스레드가 공유(읽기 전용) 잠금을 동시에 획득할 수 있으며 동시에 배타적(쓰기) 잠금 획득을 단일 스레드로 제한할 수 있습니다. 다음 코드 조각을 사용하여 공유 잠금을 설정할 수 있습니다.
Lock myLock; ReadLock r_lock(myLock); // Acquire a shared (read) lock
독점적인 쓰기 액세스의 경우 고유 잠금을 사용하세요.
WriteLock w_lock(myLock); // Acquire an exclusive (write) lock
Boost Library Approach
코드베이스가 이전 C 표준 또는 컴파일러를 사용하는 경우 Boost 라이브러리의 리더/라이터 구현을 활용할 수 있습니다. 자물쇠. Boost는 표준 라이브러리 버전과 유사하게 작동하는 Boost::shared_mutex 클래스를 제공합니다.
Lock myLock; ReadLock r_lock(myLock); // Acquire a shared (read) lock WriteLock w_lock(myLock); // Acquire an exclusive (write) lock
잠금 해제
리더가 보호하는 작업을 완료하면/ 작성기 잠금, 잠금에 대해 Unlock()을 호출하여 잠금을 해제하는 것을 기억하세요 object:
r_lock.unlock(); // Release the shared (read) lock w_lock.unlock(); // Release the exclusive (write) lock
리더/라이터 잠금을 구현하면 읽기 작업이 쓰기 작업보다 많은 경우 멀티스레드 코드를 효과적으로 최적화하여 공유 리소스에 대한 효율적인 동시 액세스를 보장할 수 있습니다.
위 내용은 리더/라이터 잠금은 어떻게 C에서 동시 액세스를 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!