Reference

[C++] mutex정의와 종류에 대하여(RAII mutex)](https://hwan-shell.tistory.com/208)

Mutex


C++ 11 버전에 등장한 class로 Thread들의 동기화를 해줄 수 있게 해주는 기능을 가지고 있다.

Thread 동기화란?

Untitled

예를 들어 게임을 하기 위해 캐릭터를 생성하고 캐릭터 ID를 하나 만든다고 가정할 때 캐릭터 ID의 중복 검사를 한 후 없으면 캐릭터를 생성할 수 있다고 가정한다.

하지만 동시 접속자 수가 100명 이상과 같이 많다면 아래와 같이 중복검사를 동시에 해서 같은 ID가 만들어지는 유저들도 존재하게 된다. → context switching 때문

Untitled

100개의 thread가 동시에 실행되는 것이 아니라 1~100까지 번갈아 가면서 (예를 들어 1번 thread는 80% 실행 후 block, 2번 thread는 20% 실행 후 block) 무작위로 실행된다 → asynchronization

이렇게 무작위로 접근하는 thread들이 하나의 자원에 경쟁하듯 접근하는 것을 **경쟁상태 (Race condition)**이라고 한다.

Thread들이 동기화를 위해 접근하는 함수의 특정 부분을 지정해 그 부분의 Thread가 100% 완전히 처리되고 넘어갈 수 있도록 도와주는 기능이 바로 mutex이다.