timed_mutex — std::timed_mutex

timed_mutex — std::timed_mutex

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

std::mutex와 유사하게 전용 소유권을 제공하되, 시간 제한 잠금을 추가 지원해요.

출처: cppreference

본문

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

주요 연산

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

사용 예 — 시간 제한 잠금

#include <mutex>
#include <chrono>

std::timed_mutex m;

// 최대 1초 동안 잠금 시도
if (m.try_lock_for(std::chrono::seconds(1))) {
    // 보호 영역
    m.unlock();
} else {
    // 시간 내 획득 실패 — 다른 작업
}

// 특정 시각까지
if (m.try_lock_until(std::chrono::steady_clock::now()
                     + std::chrono::milliseconds(500))) {
    // ...
}

특징

  • 잠금을 "잠시 시도해 보고, 안 되면 다른 일"을 할 수 있어요 — 블로킹을 제어.
  • std::mutex(시간 제한 없음)보다 유연해요.
  • 소유 스레드만 unlock() 가능.

timed_mutex는 데드락을 완전히 피하면서도 잠금 대기에 시간 상한을 두고 싶을 때 사용해요.

더 알아보기 (Learn more)

cppreference