[c++] 뮤텍스에 대한 실제 사용 사례

1. 뮤텍스를 사용한 스레드 간 동기화

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

std::mutex mtx;

void printNumbers() {
    mtx.lock();
    for (int i = 0; i < 5; ++i) {
        std::cout << i << std::endl;
    }
    mtx.unlock();
}

int main() {
    std::thread t1(printNumbers);
    std::thread t2(printNumbers);

    t1.join();
    t2.join();
    return 0;
}

위의 예시는 두 개의 스레드에서 printNumbers 함수를 동시에 실행할 때 뮤텍스를 사용하여 동기화하는 예제입니다. std::mutex를 사용하여 크리티컬 섹션을 보호하고 있습니다.

2. 뮤텍스를 사용한 자원 공유

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

std::mutex mtx;
int sharedResource = 0;

void updateResource() {
    mtx.lock();
    ++sharedResource;
    mtx.unlock();
}

int main() {
    std::thread t1(updateResource);
    std::thread t2(updateResource);

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

    std::cout << "Shared resource value: " << sharedResource << std::endl;

    return 0;
}

두 번째 예시는 여러 스레드에서 공유 자원에 안전하게 접근하기 위해 뮤텍스를 사용하는 방법을 보여줍니다.

이러한 방식으로 뮤텍스는 C++에서 다중 스레드 환경에서 안전한 동시 접근 제어를 가능하게 합니다.

이 예제 코드는 C++11 표준을 기준으로 작성되었습니다.

참고 문헌: https://en.cppreference.com/w/cpp/thread/mutex, https://docs.microsoft.com/en-us/cpp/standard-library/mutex-class