C++ · LOCK
RAII Lock으로 뮤텍스 안전하게 관리하기
뮤텍스는 직접 lock/unlock을 호출하면 예외나 조기 반환에서 해제를 놓치기 쉽습니다. RAII lock 객체는 스코프 종료와 함께 자동으로 잠금을 해제합니다.
RAII 잠금 흐름
raii
mutex
공유 자원을 보호하는 잠금 대상입니다.
lock object
lock_guard 또는 unique_lock을 생성합니다.
critical section
잠긴 스코프 안에서 공유 데이터를 수정합니다.
scope exit
정상 종료, return, 예외 모두 스코프를 벗어납니다.
auto unlock
소멸자가 mutex를 자동으로 해제합니다.
mutex
→
lock
→
임계 영역
→
스코프 종료
→
unlock
도구 비교
선택
lock_guard
가볍고 단순한 스코프 잠금에 적합합니다.
unique_lock
지연 잠금, 명시적 unlock, 조건 변수 대기를 한 스코프에서 제어할 때 씁니다.
defer_lock
여러 mutex를 std::lock과 함께 잡을 때 사용합니다.
직접 unlock 지양
예외 경로에서 해제가 빠질 위험이 큽니다.