LOCK
-
C++ Conditional Variable(조건변수)C++/C++ 멀티스레드 2022. 10. 14. 12:54
C++표준에서 제공하는 Conditional Variable을 이용하면 멀티스레드간 동기화를 구현할 수 있습니다. 조건변수를 사용하는 대표적인 패턴인 생산자-소비자 패턴을 예시로 들어보겠습니다. #include #include #include #include #include queue q; mutex m; void Producer() { while (true) { { unique_lock lock(m); int pushData = rand() % 100; q.push(pushData); cout
-
멀티스레드 Lock구현C++/C++ 멀티스레드 2022. 10. 9. 11:21
C++에서 기본적으로 제공하는 mutex, lock_guard 등을 활용하여 멀티스레드 프로그래밍이 가능하지만, 이것들이 어떻게 구현이 되었는지 간소하게나마 알아보고 직접 구현해보려 한다. lock은 기본적으로 lock상태와 unlock상태가 있다. lock상태라면, 다른 스레드가 lock을 갖지 못하고, unlock상태라면 선착순으로 하나의 스레드에게 lock을 제공할 수 있어야 한다. 그러면 어떤 스레드가 lock을 갖고 사용하고 있을 때 다른 스레드는 lock이 필요로 한다면 어떻게 해야하는가? 저번에는 화장실을 예로 들었지만, 이번에는 헬스장을 예로 들어 보겠다. 나는 헬스를 시작한지 1년정도 되었다. 헬스장에는 피크타임이 있다. 피크타임에 가면, 인기있는 헬스기구들(랫풀다운, 벤치프레스, 스쿼트..