[c++] std::mutex

std::mutex 인스턴스는 락을 취득하는 스레드와 락을 반환하는 스레드 사이의 상호 배타적인 동작을 제공하며, 이를 통해 경쟁 조건을 방지할 수 있습니다.

아래는 std::mutex를 사용하여 간단한 임계 영역을 보호하는 예제 코드입니다.

#include <iostream>
#include <thread>
#include <mutex>

std::mutex mtx;

void safeIncrement(int& value) {
    mtx.lock();
    value++;
    mtx.unlock();
}

int main() {
    int sharedValue = 0;

    std::thread t1(safeIncrement, std::ref(sharedValue));
    std::thread t2(safeIncrement, std::ref(sharedValue));

    t1.join();
    t2.join();

    std::cout << "Shared value: " << sharedValue << std::endl;

    return 0;
}

위 예제에서 std::mutex를 사용하여 safeIncrement 함수 내부의 임계 영역을 보호하고 있습니다. 이를 통해 두 개의 스레드가 동시에 value를 증가시키더라도 안전하게 동작함을 보장할 수 있습니다.

참고 문헌: