std::shared_lock · shared
읽기 전용 접근 여러 개가 함께 소유할 수 있다. 보호된 객체를 수정하거나 thread-safe하지 않은 lazy write를 섞지 않는다.
shared_mutex는 여러 reader 또는 writer 하나만 허용한다공유 소유권과 배타 소유권은 동시에 존재하지 않는다. 읽기 비율만 보고 고르지 말고 임계 영역 길이·경합·공정성을 실제 workload에서 측정한다.
std::shared_lock · shared읽기 전용 접근 여러 개가 함께 소유할 수 있다. 보호된 객체를 수정하거나 thread-safe하지 않은 lazy write를 섞지 않는다.
std::unique_lock · exclusivewriter 하나가 소유하면 다른 shared·exclusive 소유자는 모두 배제된다. RAII 범위를 공유 상태 접근만큼 좁힌다.
Sharedreader 1…N
⇄Unlocked소유자 0
⇄Exclusivewriter 1
공정성 미보장표준은 writer 우선·FIFO를 약속하지 않는다. starvation을 가정하지 말고 측정한다.
upgrade gapshared를 풀고 exclusive를 잡는 사이 상태가 바뀔 수 있어 predicate를 다시 검사한다.
비재귀같은 thread가 소유 중 다시 어떤 모드로든 획득하면 정의되지 않은 동작이다.
선택 기준쓰기·짧은 임계 영역이 많으면 단순 mutex가 더 빠르고 명확할 수 있다.