[c++] C++에서의 뮤텍스 락의 권한 설정

뮤텍스 락의 권한은 크게 두 가지로 설정됩니다. 첫째는 뮤텍스 락을 생성할 때의 초기 권한 설정이고, 둘째는 락을 획득할 때의 권한 설정입니다.

C++에서는 뮤텍스를 다음과 같이 생성하고 초기 권한을 설정할 수 있습니다.

#include <mutex>

std::mutex mtx; // 기본적으로는 뮤텍스가 잠겨져 있음
std::mutex mtx2{ std::defer_lock }; // 뮤텍스가 잠겨져 있지 않음
std::mutex mtx3{ std::try_to_lock }; // 뮤텍스를 시도해서 잠그거나 그렇지 않을 수 있음

뮤텍스를 획득할 때의 권한은 lock() 메서드를 호출할 때 설정할 수 있습니다.

#include <mutex>

std::mutex mtx;
mtx.lock(); // 뮤텍스를 강제로 잠금
if (mtx.try_lock()) { // 뮤텍스를 시도해서 잠그거나 그렇지 않을 수 있음
   // 락을 획득한 경우
} else {
   // 락을 획득하지 못한 경우
}

이렇게 뮤텍스 락의 권한 설정을 통해 스레드들이 자원에 안전하게 접근할 수 있도록 할 수 있습니다.

더 많은 정보는 다음 공식 문서를 참고하세요.