Language/C++

[C++] std::timed_mutex, std::recursive_mutex

어발 2025. 2. 3. 23:50

std::timed_mutex

일반적인 std::mutex와 사용성은 완전 동일하지만, 맴버 함수의 차이가 있다.

  std::mutex std::timed_mutex
lock O O
try_lock O O
unlock O O
native_handle
(OS단의 핸들을 얻는 함수)
O O
try_lock_for X O
try_lock_until X O

 

std::recursive_mutex

하나의 스레드가 "여러번 뮤텍스 소유" 가능.

소유한 횟수 만큼 unlock() 해야한다.

어떤 경우에 사용할까?
// std::recursive_mutex 사용 예시
class rMutex {
private:
    int shared_data = 0;
    std::recursive_mutex m;
    
public:
    void f1() {
    	m.lock();
        shard_data = 10;
        m.unlock();
    }
    
    void f2() {
    	m.lock();
        shard_data = 20;
        f1();
        m.unlock();
    }
}
728x90