thread_shared_lock

thread_shared_lock (공유 락)

shared_lock은 지연 잠금, 시간 제한 잠금, 잠금 소유권 이전을 지원하는 범용 공유 뮤텍스 소유권 래퍼예요. 이 클래스를 사용하면 공유 모드로 뮤텍스를 안전하게 잠그고 관리할 수 있어요. 이동은 가능하지만 복사는 불가능한 타입이에요.

출처: cppreference

본문

개요

shared_lock 클래스는 공유 뮤텍스를 공유 모드로 잠그는 데 사용해요. 독점 모드로 잠그려면 std::unique_lock을 사용하면 돼요. shared_lockLockable 요구 사항을 충족하며, MutexSharedTimedLockable 요구 사항을 충족한다면 TimedLockable 요구 사항도 충족해요.

공유 소유권 모드에서 대기하려면 std::condition_variable_any를 사용할 수 있어요. std::condition_variablestd::unique_lock을 필요로 하므로 독점 소유권 모드에서만 대기할 수 있어요.

template < class Mutex > class shared_lock ;

shared_lock<shared_mutex> 헤더에 정의되어 있으며, C++14부터 사용할 수 있어요.

템플릿 매개변수

매개변수 설명
Mutex 잠글 공유 뮤텍스의 타입이에요. 이 타입은 SharedLockable 요구 사항을 충족해야 해요.

멤버 타입

타입 정의
mutex_type Mutex

멤버 함수

생성자와 소멸자

함수 설명
(constructor) shared_lock을 생성하며, 선택적으로 제공된 뮤텍스를 잠가요.
(destructor) 연결된 뮤텍스를 잠금 해제해요.
operator= 뮤텍스를 소유하고 있다면 잠금 해제하고, 다른 뮤텍스의 소유권을 획득해요.

공유 잠금

함수 설명
lock 연결된 뮤텍스를 잠가요.
try_lock 연결된 뮤텍스 잠금을 시도해요.
try_lock_for 지정된 시간 동안 연결된 뮤텍스 잠금을 시도해요.
try_lock_until 지정된 시점까지 연결된 뮤텍스 잠금을 시도해요.
unlock 연결된 뮤텍스를 잠금 해제해요.

수정자

함수 설명
swap 다른 shared_lock과 데이터 멤버를 교환해요.
release 잠금 해제 없이 뮤텍스와의 연결을 끊어요.

관찰자

함수 설명
mutex 연결된 뮤텍스에 대한 포인터를 반환해요.
owns_lock 잠금이 연결된 뮤텍스를 소유하고 있는지 확인해요.
operator bool 잠금이 연결된 뮤텍스를 소유하고 있는지 확인해요.

비멤버 함수

함수 설명
std::swap(std::shared_lock) (C++14) std::swap 알고리즘을 특수화해요.

결함 보고서

다음의 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.

DR 적용 대상 발표된 동작 올바른 동작
LWG 2981 C++17 shared_lock<Mutex>에서 중복된 추론 가이드가 제공되었음 제거됨

더 알아보기 (Learn more)

cppreference