PART I 서론 _ 1
CHAPTER 1 모던 C++의 동시성 3
C++11과 C++14: 토대 4
메모리 모델 4
멀티스레딩 5
사례 연구 7
벡터의 합 계산하기 7
싱글턴의 스레드 안전한 초기화 7
CppMem의 연속 최적화 7
C++17: 표준 템플릿 라이브러리의 병렬 알고리즘 8
실행 정책 8
새 알고리즘들 8
C++20: 동시성 퓨처 9
원자계 스마트 포인터 9
확장 퓨처 10
래치와 장벽 10
코루틴 10
트랜잭션 메모리 10
태스크 블록 11
도전 11
베스트 프랙티스 11
time 라이브러리 12
용어 12
PART II 본론 _ 13
CHAPTER 2 메모리 모델 15
계약 16
기반 17
도전 18
원자계 19
꼼꼼한 메모리 모델 vs 허술한 메모리 모델 19
원자계 플래그 22
클래스 템플릿 std::atomic 27
사용자 정의 원자계 34
원자계 연산들 35
원자계 자유 함수들 36
동기화 및 순서상 제약 조건 39
C++의 여섯 가지 메모리 모델 39
시퀀스 일관성 41
acquire-release 시맨틱 44
std::memory_order_consume 53
편안한 시맨틱 57
담장 60
메모리 장벽으로서의 담장 60
세 가지 담장 60
acquire 담장과 release 담장 63
원자계 변수의 동기화와 담장의 동기화 65
CHAPTER 3 멀티스레딩 71
스레드 72
생성 72
라이프사이클 73
인수 76
메서드 80
공유 데이터 83
뮤텍스 85
잠김 90
스레드 안전한 초기화 100
C++ 프로그래머라면 반드시 알아야 할 동시성의 모든 것!
C++ 동시성 프로그래밍을 마스터할 수 있는 실용적 안내서!
이 책은 C++ 동시성의 현재와 미래를 탐험하는 여행 가이드다. 모던 C++의 동시성 이야기를 수많은 예제 코드와 함께 깊이 있게 풀어냈으며, 이를 통해 여러분은 이론과 실제를 균형 있게 습득함으로써 최대의 효과를 거둘 수 있을 것이다. 어려운 주제로 인식되는 동시성을 다루는 만큼 곤란한 문제들과 그 해결 방법도 함께 제시한다.
- C++11과 C++14은 동시적이고 병렬적인 프로그램을 만들기 위한 기본 빌딩 블록을 갖췄다.
- C++17에서는 표준 템플릿 라이브러리(STL의 병렬 알고리즘을 지원한다. 다시 말해, STL 기반 알고리즘은 대부분 순차적으로나 병렬적으로 또는 벡터화 방식으로 실행될 수 있다.
- C++의 동시성 이야기는 현재 진행형이다. C++20에는 확장 퓨처와 코루틴, 트랜잭션 등이 담길 것으로 예상된다.