[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
를 증가시키더라도 안전하게 동작함을 보장할 수 있습니다.
참고 문헌:
- https://en.cppreference.com/w/cpp/thread/mutex