멀티스레드를 사용하다보면 데이터가 공유되기 때문에 의도한 대로 데이터가 변경되지 않을 수 있다. 그럴 때 mutex lock 을 이용하여 임계영역을 설정하고 데이터를 보호할 수 있다. 임계영역 (Critical Section) 스레드나 프로세스가 동시에 접근해서는 안되는 곳으로, mutex_lock으로 보호해주어야한다. 멀티스레드 버그가 발생하는 이유 개발자의 의도는 40000 이 출력되도록 만드는 것이다. 그런데 실제로 실행해보면 아니다. 순서는 보장이 안되는 걸 아니까 누가 먼저 실행될지는 모르지만 어쨌든 10000을 네번 도니까 40000이 나올것이라고 예상할 것이다. 그런데 40000은 안나오고 매번 그 이하의 숫자가 나온다. 이런 일이 발생하는 이유는 스레드와 메모리 사이의 데이터 이동 순서가 ..