[c++] 뮤텍스를 사용한 시스템 자원 관리
소프트웨어의 효율적인 자원 관리는 시스템 성능을 향상시키는 데 중요한 요소입니다. 뮤텍스(mutual exclusion, 뮤텍스)는 동시에 하나의 스레드만 특정한 자원에 접근할 수 있도록 하는 동기화 기법으로, C++에서 시스템 자원을 안전하게 관리하는 데 사용됩니다.
뮤텍스(Mutex)
뮤텍스는 공유 자원에 대한 접근을 제한하여 한 번에 하나의 스레드만 자원을 사용할 수 있도록 합니다. 이는 경쟁 조건(race condition)과 같은 문제를 피하고, 자원에 대한 안전한 접근을 보장합니다.
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void accessResource(int id) {
// 잠금
mtx.lock();
// 공유 자원에 대한 작업 수행
std::cout << "Thread " << id << " is accessing the resource" << std::endl;
// 잠금 해제
mtx.unlock();
}
int main() {
std::thread t1(accessResource, 1);
std::thread t2(accessResource, 2);
t1.join();
t2.join();
return 0;
}
위의 예제에서, std::mutex
타입의 mtx
뮤텍스를 사용하여 두 개의 스레드가 accessResource
함수를 호출할 때 공유 자원에 대한 안전한 접근을 보장합니다.
참고 자료
- C++ Reference: std::mutex
- GeeksforGeeks: Mutual Exclusion using Mutex in C++