thread_shared_lock (공유 락)
shared_lock은 지연 잠금, 시간 제한 잠금, 잠금 소유권 이전을 지원하는 범용 공유 뮤텍스 소유권 래퍼예요. 이 클래스를 사용하면 공유 모드로 뮤텍스를 안전하게 잠그고 관리할 수 있어요. 이동은 가능하지만 복사는 불가능한 타입이에요.
출처: cppreference
본문
개요
shared_lock 클래스는 공유 뮤텍스를 공유 모드로 잠그는 데 사용해요. 독점 모드로 잠그려면 std::unique_lock을 사용하면 돼요. shared_lock은 Lockable 요구 사항을 충족하며, Mutex가 SharedTimedLockable 요구 사항을 충족한다면 TimedLockable 요구 사항도 충족해요.
공유 소유권 모드에서 대기하려면 std::condition_variable_any를 사용할 수 있어요. std::condition_variable은 std::unique_lock을 필요로 하므로 독점 소유권 모드에서만 대기할 수 있어요.
template < class Mutex > class shared_lock ;
shared_lock은 <shared_mutex> 헤더에 정의되어 있으며, C++14부터 사용할 수 있어요.
템플릿 매개변수
| 매개변수 |
설명 |
Mutex |
잠글 공유 뮤텍스의 타입이에요. 이 타입은 SharedLockable 요구 사항을 충족해야 해요. |
멤버 타입
멤버 함수
생성자와 소멸자
| 함수 |
설명 |
(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