C++ · LOCK

RAII Lock으로 뮤텍스 안전하게 관리하기

뮤텍스는 직접 lock/unlock을 호출하면 예외나 조기 반환에서 해제를 놓치기 쉽습니다. RAII lock 객체는 스코프 종료와 함께 자동으로 잠금을 해제합니다.

RAII 잠금 흐름

raii
mutex공유 자원을 보호하는 잠금 대상입니다.
lock objectlock_guard 또는 unique_lock을 생성합니다.
critical section잠긴 스코프 안에서 공유 데이터를 수정합니다.
scope exit정상 종료, return, 예외 모두 스코프를 벗어납니다.
auto unlock소멸자가 mutex를 자동으로 해제합니다.
mutexlock임계 영역스코프 종료unlock

도구 비교

선택
lock_guard가볍고 단순한 스코프 잠금에 적합합니다.
unique_lock지연 잠금, 명시적 unlock, 조건 변수 대기를 한 스코프에서 제어할 때 씁니다.
defer_lock여러 mutex를 std::lock과 함께 잡을 때 사용합니다.
직접 unlock 지양예외 경로에서 해제가 빠질 위험이 큽니다.