recursive_timed_mutex — std::recursive_timed_mutex

recursive_timed_mutex — std::recursive_timed_mutex

std::recursive_timed_mutex 클래스는 여러 스레드가 동시에 공유 데이터에 접근하는 것을 막는 데 사용하는 동기화 기본 요소예요. C++11에서 도입됐어요. <mutex> 헤더에 있어요.

std::recursive_mutex와 유사하게, recursive_timed_mutex재귀 소유권과 시간 제한 잠금을 제공해요.

출처: cppreference

본문

// <mutex> 헤더, C++11
class recursive_timed_mutex;

주요 연산

std::recursive_mutex의 연산에 추가로 시간 제한 잠금을 제공해요.

연산 설명
lock() 잠금 (재귀·블로킹)
try_lock() 즉시 시도
try_lock_for(dur) 일정 시간 동안 시도
try_lock_until(tp) 특정 시각까지 시도
unlock() 해제

사용 예 — 시간 제한 잠금

#include <mutex>
#include <chrono>

std::recursive_timed_mutex m;

// 최대 1초 동안 잠금 시도
if (m.try_lock_for(std::chrono::seconds(1))) {
    // 재귀 잠금도 가능
    m.lock();    // 같은 스레드 재잠금
    // ...
    m.unlock();
    m.unlock();
} else {
    // 시간 내 획득 실패
}

특징

  • 재귀 소유권 — 같은 스레드가 여러 번 잠글 수 있어요.
  • 시간 제한 — 일정 시간·시각까지 잠금을 기다리되, 못 얻으면 실패를 반환해요.
  • 블로킹 없이 "잠시만 기다려 보고 안 되면 다른 일을" 하는 패턴에 유용해요.
// 특정 시각까지 대기
if (m.try_lock_until(std::chrono::steady_clock::now() + std::chrono::milliseconds(500))) {
    // ...
}

recursive_timed_mutex는 재귀 잠금이 필요하면서도 시간 제한으로 불필요한 블로킹을 피하고 싶을 때 사용해요.

더 알아보기 (Learn more)

cppreference