반응형
공유 자원 잠그기 예제
#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()
뮤텍스 잠금을 풉니다. 현재 쓰레드에서 잠긴적이 없을 떄의 행동은 정의되어 있지 않습니다.
반응형
'SW > C++' 카테고리의 다른 글
C++ : condition_variable, unique_lock : 개념, 정의, 활용 방법 (0) | 2020.03.29 |
---|---|
C++ : std::scoped_lock : 예제, 사용법, 활용법, 실수 방지 방법 (0) | 2020.03.21 |
C++ : 쓰레드 : sleep_for(), yield() : 개념, 예제, 사용 방법 (0) | 2020.03.19 |
C++ : thread : 람다식 활용한 예제 : 쓰레드 리턴 값 참조 방법 (0) | 2020.03.18 |
C++ : thread : detach, joinable : 사용법, 예제, 개념 (0) | 2020.03.17 |