공유 데이터 접근을 막는 목적은 같지만, 단순 보호, 지연 잠금, 읽기 공유, 시간 제한처럼 필요한 제어 수준이 다릅니다.
std::mutex와 std::lock_guard로 스코프
종료 시 자동 해제합니다.
std::unique_lock은 조건 변수와 지연 잠금에
어울립니다.
std::shared_mutex로 읽기는 공유하고 쓰기는 단독
처리합니다.
std::lock과 defer_lock으로 순환 대기
위험을 줄입니다.