프로그래밍(c++)

[ C++] std::mutex를 통한 thread 동기화

정체불명의 모모 2021. 8. 5. 18:51

thread가 C++ 11에서 직접 지원하면서 동기화를 위한 std::mutext가 추가되었습니다.

 

mutex : 스레드로 동시에 여러 개를 처리할 때 모든 스레드가 접근하는 데이터를 하나의 스레드가 먼저 사용할 수 있도록

독점적으로 자원을 가져다 사용할 수 있도록 해주는 방법 입니다.

스레드를 10개를 생성하고 스레드로 실행시키는 함수인 increase_value() 함수에서 전역 변수 value를 하나씩 증가시키고 하나씩 출력합니다.

이 때 뮤텍스를 이용하여 동기화합니다.

 

위의 코드를 뮤텍스를 이용해서 동기화를 하면 정상적인 결과값이 나옵니다.

1, 2, 3, 4, 5, 6, 7, 8 ,9 , 10

 

mutex를 지운 후 컴파일 하면

개판 오분전의 결과 값이 나온다.

멀티 쓰레드 무섭다... ㅎㄷ ㄷ

 


 

참고 사이트

https://jjeongil.tistory.com/154

 

[ C++ ] mutex 개념 및 예제

뮤텍스는 스레드로 동시에 여러 개를 처리할 떄 모든 스레드가 접근하는 데이터를 하나의 스레드가 먼저 사용할 수 있도록 독점적으로 자원을 가져다 사용할 수 있도록 해주는 방법입니다. 자

jjeongil.tistory.com

https://psychoria.tistory.com/231

 

냉정과 열정사이

프로그램 개발과 테크 집약 블로그

psychoria.tistory.com