본문 바로가기
Language/C++

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

by 어발 2025. 2. 3.

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

'Language > C++' 카테고리의 다른 글

[C++] std::unique_lock, std::scope_lock, std::shared_lock  (5) 2025.07.09
[C++] std::shared_mutex  (0) 2025.07.08
[C++] std::jthread  (0) 2025.01.06
[C++] std::async  (0) 2024.12.20
[C++] std::packaged_task  (0) 2024.12.18

댓글