[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