Namespaces
Variants

C++ named requirements: TimedMutex (since C++11)

From cppreference.net
C++ named requirements

TimedMutex 요구 사항은 스레드 간 동기화를 포함하도록 TimedLockable 요구 사항을 확장합니다.

목차

요구사항

또한, m 객체가 TimedMutex 타입일 경우:

  • 다음 표현식 m. try_lock_for ( duration ) 은 다음과 같은 특성을 가집니다
  • 원자적 연산으로 동작합니다.
  • duration 으로 지정된 시간 내에 뮤텍스의 배타적 소유권을 획득하려 시도합니다. duration duration.zero() 보다 작거나 같은 경우, 블로킹 없이 소유권 획득을 시도합니다( try_lock() 과 유사하게). 그렇지 않은 경우, 이 함수는 뮤텍스가 획득되거나 duration 으로 지정된 시간이 경과할 때까지 블록됩니다. 성공한 경우에만 duration 내에 반환되지만, duration 동안 특정 시점에 다른 스레드가 소유하지 않았더라도 뮤텍스 획득에 실패할 수 있습니다. 어떤 경우든 뮤텍스가 획득되면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
  • try_lock_for(duration) 이 성공하면, 동일 객체에 대한 이전 unlock() 연산들이 이 연산과 동기화됩니다 (release-acquire std::memory_order 와 동등함).
  • 호출 스레드가 이미 뮤텍스를 소유하고 있는 경우 동작은 정의되지 않습니다(m이 std::recursive_timed_mutex 인 경우는 제외).
  • 실행 중에 clock, time point 또는 duration에 의해 예외가 발생할 수 있습니다(표준 라이브러리가 제공하는 clocks, time points, durations은 예외를 발생시키지 않음).
  • 다음 표현식 m. try_lock_until ( time_point ) 은 다음과 같은 특성을 가집니다
  • 원자적 연산으로 동작합니다.
  • time_point 까지 남은 시간 내에 뮤텍스의 배타적 소유권을 획득하려 시도합니다. 만약 time_point 가 이미 지난 경우, 블로킹 없이 소유권 획득을 시도합니다( try_lock() 처럼). 그렇지 않으면 이 함수는 뮤텍스가 획득되거나 time_point 로 지정된 시간이 경과할 때까지 블록됩니다. 성공한 경우에만 time_point 이전에 반환되지만, time_point 이전의 어떤 시점에서 다른 스레드가 소유하지 않았더라도 뮤텍스 획득에 실패할 수 있습니다. 어떤 경우든 뮤텍스가 획득되면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.
  • try_lock_until(time_point) 가 성공하면, 동일 객체에 대한 이전 unlock() 연산들이 이 연산과 동기화됩니다 (release-acquire std::memory_order 와 동등함).
  • 호출 스레드가 이미 뮤텍스를 소유하고 있는 경우 동작은 정의되지 않습니다(m이 std::recursive_timed_mutex 인 경우는 제외).
  • 실행 중에 clock, time point 또는 duration에 의해 예외가 발생할 수 있습니다(표준 라이브러리가 제공하는 clocks, time points, durations은 절대 예외를 발생시키지 않음).

표준 라이브러리

다음 표준 라이브러리 타입들은 TimedMutex 요구사항을 충족합니다:

동일 스레드에 의해 재귀적으로 잠글 수 있고 타임아웃을 사용한 잠금을 구현하는
상호 배제 기능을 제공함
(클래스)
공유 상호 배제 기능을 제공하고 타임아웃을 사용한 잠금을 구현함
(클래스)
타임아웃을 사용한 잠금을 구현하는 상호 배제 기능을 제공함
(클래스)

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 2093 C++11 타임아웃 관련 예외가 명세에서 누락됨 명시됨

참고 항목