[c++] C++에서 뮤텍스를 사용한 스레드 간 통신

C++에서 멀티스레딩 환경에서 스레드 간 안전한 통신을 위해 뮤텍스(mutex)를 사용할 수 있습니다. 뮤텍스는 여러 스레드가 공유된 자원에 접근할 때 상호배타적인 실행을 보장하는 동기화 기법입니다.

뮤텍스 생성 및 사용

다음은 C++에서 뮤텍스를 생성하고 사용하는 간단한 예제입니다.

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

std::mutex mtx;

void sharedResourceAccess(int id) {
    mtx.lock();
    std::cout << "Thread " << id << " is accessing the shared resource" << std::endl;
    mtx.unlock();
}

int main() {
    std::thread t1(sharedResourceAccess, 1);
    std::thread t2(sharedResourceAccess, 2);

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

    return 0;
}

위의 예제에서 std::mutex를 사용하여 뮤텍스를 생성하고, mtx.lock()mtx.unlock()을 사용하여 뮤텍스를 잠그고 푸는 동작을 수행합니다. 이를 통해 두 개의 스레드가 안전하게 공유 자원에 접근할 수 있습니다.

주의사항

뮤텍스를 사용하여 C++에서 스레드 간 통신을 안전하게 수행할 수 있으며, 이를 통해 병행성을 효과적으로 관리할 수 있습니다.

참고 문헌: