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 동기화에 적합해요.