[c++] 뮤텍스 (Mutex)란 무엇인가?
예를 들어, 멀티스레드 환경에서 동시에 파일에 쓰기 작업을 수행하려면 각 스레드가 파일에 접근하는 순서를 제어해야 합니다. 이때 뮤텍스를 사용하여 각 스레드가 파일을 접근할 때마다 상호배제를 적용할 수 있습니다.
아래는 C++에서의 뮤텍스 사용 예시입니다.
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void printMessage(int id, const std::string& message) {
mtx.lock();
std::cout << "Thread " << id << ": " << message << std::endl;
mtx.unlock();
}
int main() {
std::thread t1(printMessage, 1, "Hello");
std::thread t2(printMessage, 2, "World");
t1.join();
t2.join();
return 0;
}
위 코드에서 std::mutex
를 사용하여 printMessage
함수의 실행을 상호배제하고 있습니다.
자세한 내용은 다음 참고 자료를 참조할 수 있습니다.
- C++ Reference: https://en.cppreference.com/w/cpp/thread/mutex
- GeeksforGeeks: https://www.geeksforgeeks.org/mutex-in-cpp/