C++ named requirements: SharedTimedMutex (since C++14)
From cppreference.net
C++
C++ named requirements
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SharedTimedMutex 요구 사항은 공유 잠금 소유권 모드를 포함하도록 TimedMutex 요구 사항을 확장합니다.
요구사항
또한,
m
객체는
SharedTimedMutex
타입의 시간 제한 공유 연산을 지원합니다:
- 다음 표현식 m. try_lock_shared_for ( duration ) 은 다음과 같은 특성을 가집니다
-
- 원자적 연산으로 동작합니다.
-
duration으로 지정된 시간 내에 뮤텍스의 공유 소유권을 획득하려 시도합니다.duration이duration.zero()보다 작거나 같으면, 대기 없이 소유권 획득을 시도합니다(try_lock()과 유사하게). 그렇지 않으면, 이 함수는 뮤텍스가 획득되거나duration으로 지정된 시간이 경과할 때까지 블록됩니다. 성공한 경우에만duration내에 반환되지만,duration동안 어느 시점에서 다른 스레드에 의해 소유되지 않았더라도 뮤텍스 획득에 실패할 수 있습니다. 어떤 경우든, 뮤텍스가 획득되면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다. -
try_lock_shared_for(duration)이 성공하면, 동일 객체에 대한 이전unlock()연산들이 이 연산과 동기화됩니다 (release-acquire std::memory_order 와 동등함). - 호출 스레드가 이미 어떤 모드로든 뮤텍스를 소유하고 있는 경우의 동작은 정의되지 않습니다.
- 실행 중에 clock, time point, 또는 duration에 의해 예외가 발생할 수 있습니다 (표준 라이브러리가 제공하는 clocks, time points, 및 durations은 예외를 발생시키지 않습니다).
- 예외가 발생하면 공유 락은 획득되지 않습니다.
- 다음 표현식 m. try_lock_shared_until ( time_point ) 은 다음과 같은 특성을 가집니다
-
- 원자적 연산으로 동작합니다.
-
time_point까지 남은 시간 내에 뮤텍스의 공유 소유권을 획득하려 시도합니다. 만약time_point가 이미 지난 경우, 잠금 없이 소유권 획득을 시도합니다(try_lock()와 유사하게). 그렇지 않으면 이 함수는 뮤텍스가 획득되거나time_point로 지정된 시간이 지날 때까지 블록됩니다. 성공한 경우에만time_point이전에 반환되지만,time_point이전의 어떤 시점에서 다른 스레드가 소유하지 않았더라도 뮤텍스 획득에 실패할 수 있습니다. 어떤 경우든 뮤텍스가 획득되면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다. -
try_lock_shared_until(time_point)가 성공하면, 동일한 객체에 대한 이전unlock()연산들이 이 연산과 동기화됩니다 (release-acquire std::memory_order 와 동등함). - 호출 스레드가 이미 어떤 모드로든 뮤텍스를 소유하고 있는 경우 동작은 정의되지 않습니다.
- 실행 중에 clock, time point, duration에 의해 예외가 발생할 수 있습니다 (표준 라이브러리가 제공하는 clocks, time points, durations은 절대 예외를 발생시키지 않음).
- 예외가 발생하면 공유 잠금은 획득되지 않습니다.
표준 라이브러리
다음 표준 라이브러리 타입들은 SharedTimedMutex 요구사항을 충족합니다:
|
(C++14)
|
공유 상호 배제 기능을 제공하고 타임아웃을 사용한 잠금을 구현합니다
(클래스) |