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는 데드락을 완전히 피하면서도 잠금 대기에 시간 상한을 두고 싶을 때 사용해요.