태그: mutex
7편
-
C++17 scoped_lock: 여러 뮤텍스를 데드락 없이 잠그기와 lock_guard·unique_lock 비교
계좌 이체처럼 두 뮤텍스를 잠가야 할 때 순서가 엇갈려 생기는 데드락을 std::scoped_lock 한 줄로 피하는 방법과, lock_guard, unique_lock과의 차이, C++11에서 std::lock으로 같은 효과를 내는 법, 계층적 잠금 패턴을 예제로 설명합니다.
-
C++ 멀티스레드 간헐적 크래시: ThreadSanitizer로 데이터 레이스 찾고 mutex·atomic으로 고치기
싱글스레드에선 멀쩡하던 코드가 멀티스레드에서 간헐적으로 죽을 때, ThreadSanitizer로 데이터 레이스를 찾아내고 mutex·lock_guard·atomic 중 무엇으로 동기화할지, 데드락과 거짓 공유는 어떻게 피할지 예제로 설명합니다.
-
C++17 shared_mutex: 읽기-쓰기 락으로 동시 읽기 허용하기와 쓰기 기아
읽기가 대부분인 캐시나 설정 관리자에서 std::mutex 대신 C++17 shared_mutex를 쓰면 shared_lock으로 여러 스레드가 동시에 읽을 수 있습니다. unique_lock과의 차이, 캐시·통계 수집기 예제, 쓰기 기아와 락 업그레이드 데드락을 다룹니다.
-
C++ mutex와 lock_guard·unique_lock·scoped_lock: 임계 영역 보호와 데드락 방지
std::mutex 기본 사용법부터 lock_guard·unique_lock·scoped_lock RAII 패턴, 데드락 방지, recursive_mutex·timed_mutex까지 C++ 동기화 도구를 예제로 정리합니다.
-
C++ 멀티스레딩 기초: std::thread·mutex·생산자-소비자와 자주 겪는 문제
std::thread 생성과 인자 전달, mutex와 lock_guard로 경쟁 조건 막기, 생산자-소비자와 스레드 풀 구현, 그리고 데드락, detach 후 댕글링 참조, false sharing처럼 멀티스레드 코드에서 자주 겪는 문제의 원인과 해결을 예제로 다룹니다.
-
Data Race 잡는 법: Mutex와 Atomic 중 뭘 써야 할까
카운터가 깨지거나 check-then-act로 재고가 어긋나는 Data Race 사례를 두고 mutex와 atomic 중 무엇을 쓸지 판단 기준을 제시합니다. memory_order 요약, CAS 개념, 순서 잠금과 std::lock으로 데드락을 피하는 법도 다룹니다.
-
C++ 멀티스레드 Asio의 딜레마 | Data Race와 Mutex의 한계 [#2]
io_context 하나를 스레드 풀에서 여러 run()으로 돌릴 때 같은 세션의 핸들러가 동시에 실행되어 data race가 생기는 구조, 핸들러 안에서 mutex를 잡으면 처리량이 떨어지는 이유, 락을 잡은 채 다른 핸들러를 기다리다 빠지는 데드락을 설명합니다.