[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 함수를 호출할 때 공유 자원에 대한 안전한 접근을 보장합니다.

참고 자료