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