728x90
멀티스레드 #multithread #스레드 #병렬프로그래밍 #C++
-
C++ 멀티스레드, lock(mutex)C++/C++ 멀티스레드 2022. 10. 6. 21:07
저번 포스팅에서는 공유데이터에 대한 동시접근으로 인해 발생하는 문제를 해결하기 위한 방법으로 atomic을 사용해봤다. 오늘은 mutex라는 lock을 사용해 보겠다. 먼저 문제가 되는 상황을 살펴보면 이번에는 C++의 컨테이너 자료형 Vector가 멀티스레드 환경에서 동시에 접근되는 상황이다. 들어가기에 앞서 vector자료형에 대해서 간단히 살펴보면 1. 가변배열 2. 벡터의 size가 capacity만큼 커지면, 2-1. 새로운 메모리공간에 기존의 1.5~2배에 해당하는 capacity를 할당받고, 2-2. 새로운 메모리공간에 기존의 메모리에 있던 값들을 복사한다. 2-3. 기존의 메모리에 있던 값들을 지운다. #include #include #include #include vector v; voi..