태그: threading
3편
-
C++ 스레드 풀 직접 구현하기: 작업 큐, packaged_task로 결과 받기, 종료 시 데드락
조건 변수로 작업을 기다리는 워커 루프와 작업 큐로 C++ 스레드 풀을 직접 만들고, packaged_task와 future로 결과와 예외를 돌려받게 확장합니다. 병렬 계산·파일 처리·웹 크롤러 예제와 종료 시 데드락, 적절한 스레드 수 정하기도 다룹니다.
-
C++17 shared_mutex: 읽기-쓰기 락으로 동시 읽기 허용하기와 쓰기 기아
읽기가 대부분인 캐시나 설정 관리자에서 std::mutex 대신 C++17 shared_mutex를 쓰면 shared_lock으로 여러 스레드가 동시에 읽을 수 있습니다. unique_lock과의 차이, 캐시·통계 수집기 예제, 쓰기 기아와 락 업그레이드 데드락을 다룹니다.
-
C++ 메모리 모델: happens-before, memory_order 선택 기준, 데이터 레이스가 UB인 이유
C++11부터 도입된 메모리 모델을 정리합니다. happens-before, synchronizes-with 관계, memory_order(relaxed/acquire-release/seq_cst) 선택 기준, 그리고 데이터 레이스가 왜 정의되지 않은 동작(UB)으로 이어지는지 실전 코드로 설명합니다.