std:: shared_timed_mutex
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Exclusive locking | ||||
| Shared locking | ||||
|
헤더 파일에 정의됨
<shared_mutex>
|
||
|
class
shared_timed_mutex
;
|
(C++14부터) | |
shared_timed_mutex
클래스는 여러 스레드가 동시에 접근하는 것으로부터 공유 데이터를 보호하는 데 사용할 수 있는 동기화 기본 요소입니다. 배타적 접근을 용이하게 하는 다른 뮤텍스 유형과 달리,
shared_timed_mutex
는 두 가지 수준의 접근 권한을 가집니다:
- exclusive - 뮤텍스를 소유할 수 있는 스레드는 오직 하나뿐입니다.
- shared - 여러 스레드가 동일한 뮤텍스의 소유권을 공유할 수 있습니다.
공유 뮤텍스는 일반적으로 여러 리더가 데이터 레이스를 발생시키지 않고 동시에 동일한 리소스에 접근할 수 있지만, 오직 하나의 라이터만이 접근할 수 있는 상황에서 사용됩니다.
timed_mutex
와 유사한 방식으로,
shared_timed_mutex
는
try_lock_for()
,
try_lock_until()
,
try_lock_shared_for()
,
try_lock_shared_until()
멤버 함수들을 통해 타임아웃을 설정하여
shared_timed_mutex
의 소유권을 요청하는 기능을 제공합니다.
shared_timed_mutex
클래스는
SharedTimedMutex
와
StandardLayoutType
의 모든 요구사항을 충족합니다.
목차 |
멤버 함수
|
뮤텍스를 생성함
(public member function) |
|
|
뮤텍스를 파괴함
(public member function) |
|
|
operator=
[deleted]
|
복사 할당 불가
(public member function) |
배타적 잠금 |
|
|
뮤텍스를 잠금, 사용 불가능할 경우 차단됨
(public member function) |
|
|
뮤텍스 잠금을 시도함, 사용 불가능할 경우 반환됨
(public member function) |
|
|
뮤텍스 잠금을 시도함, 지정된 시간 동안
사용 불가능한 경우 반환됨 (public member function) |
|
|
뮤텍스 잠금을 시도함, 지정된 시간점까지
사용 불가능한 경우 반환됨 (public member function) |
|
|
뮤텍스를 잠금 해제함
(public member function) |
|
공유 잠금 |
|
|
공유 소유권을 위해 뮤텍스를 잠금, 사용 불가능할 경우 차단됨
(public member function) |
|
|
공유 소유권을 위해 뮤텍스 잠금을 시도함, 사용 불가능할 경우 반환됨
(public member function) |
|
|
공유 소유권을 위해 뮤텍스 잠금을 시도함, 지정된 시간 동안
사용 불가능한 경우 반환됨 (public member function) |
|
|
공유 소유권을 위해 뮤텍스 잠금을 시도함, 지정된 시간점까지
사용 불가능한 경우 반환됨 (public member function) |
|
|
뮤텍스를 잠금 해제함 (공유 소유권)
(public member function) |
|
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_shared_timed_mutex
|
201402L
|
(C++14) |
std::shared_timed_mutex
|
예제
|
이 섹션은 불완전합니다
이유: 동기를 부여하는 예시 작성 필요 |
여러 명의 읽기 권한을 가질 수 있지만 한 명의 쓰기 권한만을 처리할 수 있는 리소스를 보유하는 클래스의 복사 할당 연산자.
#include <mutex> #include <shared_mutex> class R { mutable std::shared_timed_mutex mut; /* data */ public: R& operator=(const R& other) { // requires exclusive ownership to write to *this std::unique_lock<std::shared_timed_mutex> lhs(mut, std::defer_lock); // requires shared ownership to read from other std::shared_lock<std::shared_timed_mutex> rhs(other.mut, std::defer_lock); std::lock(lhs, rhs); /* assign data */ return *this; } }; int main() { R r; }