shared_timed_mutex — std::shared_timed_mutex

shared_timed_mutex — std::shared_timed_mutex

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

다른 뮤텍스와 달리 shared_timed_mutex공유(읽기)와 배타(쓰기) 양쪽에 시간 제한 잠금을 제공해요.

출처: cppreference

본문

// <shared_mutex> 헤더, C++14
class shared_timed_mutex;

주요 연산

연산 설명
lock() / unlock() 배타 잠금/해제
try_lock(), try_lock_for(), try_lock_until() 배타 시간 제한
lock_shared() / unlock_shared() 공유 잠금/해제
try_lock_shared(), try_lock_shared_for(), try_lock_shared_until() 공유 시간 제한

사용 예

#include <shared_mutex>
#include <chrono>

std::shared_timed_mutex stm;

// 읽기 (공유) — 시간 제한으로 반환
std::shared_lock<std::shared_timed_mutex> read_lock(stm);
// ...

// 쓰기 (배타) — 시간 제한 시도
std::unique_lock<std::shared_timed_mutex> write_lock(stm, std::defer_lock);
if (write_lock.try_lock_for(std::chrono::seconds(1))) {
    // 1초 내에 쓰기 잠금 획득
}

std::shared_mutex와의 차이

shared_timed_mutex shared_mutex
표준 C++14 C++17
공유/배타 O O
시간 제한 잠금 O X

shared_timed_mutex는 시간 제한 시도가 가능한 reader-writer 뮤텍스예요. try_lock_shared_for, try_lock_until 등을 제공해 블로킹을 제어할 수 있어요.

특징

  • 읽기(공유)·쓰기(배타) 모두 시간 제한 비차단 시도를 지원해요.
  • 읽기 많은 워크로드에서 성능상 유리.
  • shared_lock(읽기), unique_lock(쓰기)과 함께 쓰여요.

std::shared_timed_mutex는 "잠시만 시도하고 안 되면 다른 작업"이 필요한 reader-writer 동기화에 적합해요.

더 알아보기 (Learn more)

cppreference