SW/C++

C++ : mutex (뮤텍스) : 예제, 사용법, 활용 방법

얇은생각 2020. 3. 20. 07:30
반응형

C++ mutex

 

공유 자원 잠그기 예제

#include <iostream>
#include <chrono>
#include <mutex>
#include <string>
#include <thread>

void PrintMessage(const std::string& message)
{
    static std::mutex sMutex;
    sMutex.lock();
    std::cout << message << std::endl;
    sMutex.unlock();
}

int main()
{
    std::thread thread(PrintMessage, "Message from a child thread.");

    PrintMessage("Message from a main thread.");

    thread.join();

    return 0;
}

 

출력하는 동안은 자원을 잠구어서 제대로 출력이 가능하도록 합니다.

 

 

 

뮤텍스 생성자

복사 생성자는 delete 처리되어 있습니다. 

 

 

 

std::mutex::lock()

뮤텍스를 잠급니다. 동일한 쓰레드에서 두 번 잠그면 데드락이 발생합니다. 꼭 구현을 해야한다면, std::recursive_mutex를 사용합니다.

 

 

 

std::mutex::unlock()

뮤텍스 잠금을 풉니다. 현재 쓰레드에서 잠긴적이 없을 떄의 행동은 정의되어 있지 않습니다.

반응형