recursive_timed_mutex
recursive_timed_mutex (재귀적 시간 제한 뮤텍스)
recursive_timed_mutex 클래스는 여러 스레드가 공유 데이터에 동시에 접근하지 못하도록 보호하는 동기화 기본 요소예요. std::recursive_mutex와 유사하게 배타적이면서도 재귀적인 소유 의미론을 제공해요. 또한 try_lock_for와 try_lock_until 멤버 함수를 통해 시간 제한을 두고 뮤텍스 소유권 획득을 시도할 수 있어요.
recursive_timed_mutex 클래스는 TimedMutex와 StandardLayoutType의 모든 요구 사항을 충족해요. <mutex> 헤더에 정의되어 있으며 C++11부터 사용할 수 있어요.
출처: cppreference
본문
멤버 타입
| 멤버 타입 | 정의 |
|---|---|
native_handle_type (선택적*) |
구현 정의 [edit] |
멤버 함수
생성자와 소멸자
| 함수 | 설명 |
|---|---|
| (생성자) | 뮤텍스를 생성해요 (공개 멤버 함수) [edit] |
| (소멸자) | 뮤텍스를 소멸해요 (공개 멤버 함수) [edit] |
operator= [삭제됨] |
복사 대입이 불가능해요 (공개 멤버 함수) [edit] |
잠금
| 함수 | 설명 |
|---|---|
lock |
뮤텍스를 잠가요. 뮤텍스를 사용할 수 없으면 차단해요 (공개 멤버 함수) [edit] |
try_lock |
뮤텍스 잠금을 시도해요. 뮤텍스를 사용할 수 없으면 반환해요 (공개 멤버 함수) [edit] |
try_lock_for |
뮤텍스 잠금을 시도해요. 지정된 시간 제한 동안 뮤텍스를 사용할 수 없으면 반환해요 (공개 멤버 함수) [edit] |
try_lock_until |
뮤텍스 잠금을 시도해요. 지정된 시점에 도달할 때까지 뮤텍스를 사용할 수 없으면 반환해요 (공개 멤버 함수) [edit] |
unlock |
뮤텍스의 잠금을 해제해요 (공개 멤버 함수) [edit] |
네이티브 핸들
| 함수 | 설명 |
|---|---|
native_handle |
구현에서 정의한 기본 네이티브 핸들 객체를 반환해요 (공개 멤버 함수) [edit] |
동작 방식
recursive_timed_mutex는 재귀적 소유권을 지원해요. 같은 스레드가 이미 소유한 뮤텍스에 대해 다시 lock을 호출해도 교착 상태가 발생하지 않아요. 내부적으로 소유 스레드와 잠금 횟수를 기록하며, unlock을 호출할 때마다 잠금 횟수가 줄어들고 마지막 unlock에서 실제로 뮤텍스가 해제돼요. try_lock_for와 try_lock_until을 사용하면 일정 시간 또는 특정 시점까지 뮤텍스를 획득하지 못할 경우 실패를 반환받을 수 있어요.