이 상품은 구매 후 지원 기기에서 예스24 eBook앱 설치 후 바로 이용 가능한 상품입니다.
|
PART I 서론 _ 1CHAPTER 1 모던 C++의 동시성 3C++11과 C++14: 토대 4메모리 모델 4멀티스레딩 5사례 연구 7벡터의 합 계산하기 7싱글턴의 스레드 안전한 초기화 7CppMem의 연속 최적화 7C++17: 표준 템플릿 라이브러리의 병렬 알고리즘 8실행 정책 8새 알고리즘들 8C++20: 동시성 퓨처 9원자계 스마트 포인터 9확장 퓨처 10래치와 장벽 10코루틴 10트랜잭션 메모리 10태스크 블록 11도전 11베스트 프랙티스 11time 라이브러리 12용어 12PART II 본론 _ 13CHAPTER 2 메모리 모델 15계약 16기반 17도전 18원자계 19꼼꼼한 메모리 모델 vs 허술한 메모리 모델 19원자계 플래그 22클래스 템플릿 std::atomic 27사용자 정의 원자계 34원자계 연산들 35원자계 자유 함수들 36동기화 및 순서상 제약 조건 39C++의 여섯 가지 메모리 모델 39시퀀스 일관성 41acquire-release 시맨틱 44std::memory_order_consume 53편안한 시맨틱 57담장 60메모리 장벽으로서의 담장 60세 가지 담장 60acquire 담장과 release 담장 63원자계 변수의 동기화와 담장의 동기화 65CHAPTER 3 멀티스레딩 71스레드 72생성 72라이프사이클 73인수 76메서드 80공유 데이터 83뮤텍스 85잠김 90스레드 안전한 초기화 100스레드 로컬 데이터 106조건 변수 108wait 작업 흐름 110사라진 깨우기와 가짜 깨우기 112태스크 112스레드와 태스크 113std::async 115std::packaged_task 120std::promise와 std::future 124CHAPTER 4 사례 연구 135벡터의 합 계산하기 136벡터의 싱글스레딩 덧셈 137공유 변수의 멀티스레딩 합 143스레드 로컬 합 148벡터의 합: 결론 157싱글턴의 스레드 안전한 초기화 158잠김 패턴의 이중 확인 159성능 측정 160스레드 안전한 마이어스 싱글턴 163std::once_flag와 결합된 std::call_once 166원자계 167스레드 안전한 싱글턴 구현의 성능 수치들 170CppMem 연속 최적화 171CppMem 개요 172CppMem: 비원자계 변수 176CppMem: 잠김 180CppMem: 시퀀스 일관성 원자계 182CppMem: acquire-release 시맨틱 원자계 187CppMem: 비원자계가 적용된 원자계 190CppMem: 편안한 시맨틱 원자계 192결론 194CHAPTER 5 표준 템플릿 라이브러리의 병렬 알고리즘 195실행 정책 196알고리즘 198새 알고리즘들 199함수형 유산 203CHAPTER 6 미래: C++20 205원자계 스마트 포인터 206스레드 안전한 단일 연결 리스트 207확장 퓨처 208std::future 208std::async, std::packaged_task, std::promise 210새 퓨처 생성하기 210래치와 장벽 213std::latch 214std::barrier 214std::flex_barrier 216코루틴 217제너레이터 함수 218세부 내용 221트랜잭션 메모리 223ACI(D) 224동기화 블록과 원자계 블록 224transaction_safe 코드와 transaction_unsafe 코드 228태스크 블록 229fork와 join 229define_task_block과 define_task_block_restore_thread 231인터페이스 231스케줄러 232PART III 심화 _ 233CHAPTER 7 도전 235ABA 236비유 236비임계 ABA 237잠김 없는 데이터 구조 237ABA 문제 238해결책 239블로킹 문제 241프로그램 불변식 깨기 243데이터 경쟁 244가짜 공유 246변수의 라이프사이클 문제 246움직이는 스레드 247교착상태 249경쟁 상태 250CHAPTER 8 베스트 프랙티스 251개괄 252코드 리뷰 252변형 가능한 데이터의 데이터 공유를 최소화하라 252대기를 최소화하라 253변형 불가능한 데이터를 먼저 사용하라 253올바른 추상화를 찾아라 253정적 코드 분석 도구를 사용하라 254동적 강화 도구를 사용하라 254메모리 모델 255동기화에 volatile을 사용하지 마라 255잠김 없는 프로그램을 만들지 마라 256잠김 없는 프로그램이 불가피할 때는 잘 정립된 패턴을 사용하라 256자신만의 추상화를 만들지 말고 언어가 제공하는 보장을 사용하라 256멀티스레딩 257스레드 257데이터 공유 259조건 변수 262프로미스와 퓨처 265CHAPTER 9 time 라이브러리 267시점과 기간, 클록의 상호작용 268시점 269시점에서 캘린더 시간까지 269유효한 시간 범위를 넘어 271기간 272계산 274클록 276정확도와 고정성 277에포크 279잠자기와 기다리기 281관습 281다양한 기다리기 전략 282CHAPTER 10 용어 287찾아보기 295
|
Rainer Grimm
라이너 그림의 다른 상품