장바구니 담기 close

장바구니에 상품을 담았습니다.

모던C++로 배우는 동시성 프로그래밍

모던C++로 배우는 동시성 프로그래밍

  • 라이너그림
  • |
  • 제이펍
  • |
  • 2018-08-06 출간
  • |
  • 316페이지
  • |
  • 188 X 245 X 16 mm
  • |
  • ISBN 9791188621309
판매가

25,000원

즉시할인가

22,500

카드할인

0원(즉시할인 0%)

적립금

1,250원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
22,500

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

C++ 프로그래머라면 반드시 알아야 할 동시성의 모든 것!
C++ 동시성 프로그래밍을 마스터할 수 있는 실용적 안내서!

이 책은 C++ 동시성의 현재와 미래를 탐험하는 여행 가이드다. 모던 C++의 동시성 이야기를 수많은 예제 코드와 함께 깊이 있게 풀어냈으며, 이를 통해 여러분은 이론과 실제를 균형 있게 습득함으로써 최대의 효과를 거둘 수 있을 것이다. 어려운 주제로 인식되는 동시성을 다루는 만큼 곤란한 문제들과 그 해결 방법도 함께 제시한다.

C++11과 C++14은 동시적이고 병렬적인 프로그램을 만들기 위한 기본 빌딩 블록을 갖췄다. C++17에서는 표준 템플릿 라이브러리(STL)의 병렬 알고리즘을 지원한다. 다시 말해, STL 기반 알고리즘은 대부분 순차적으로나 병렬적으로 또는 벡터화 방식으로 실행될 수 있다. C++의 동시성 이야기는 현재 진행형이다. C++20에는 확장 퓨처와 코루틴, 트랜잭션 등이 담길 것으로 예상된다.      

목차


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
스레드 로컬 데이터 106
조건 변수 108
wait 작업 흐름 110
사라진 깨우기와 가짜 깨우기 112
태스크 112
스레드와 태스크 113
std::async 115
std::packaged_task 120
std::promise와 std::future 124

CHAPTER 4 사례 연구 135
벡터의 합 계산하기 136
벡터의 싱글스레딩 덧셈 137
공유 변수의 멀티스레딩 합 143
스레드 로컬 합 148
벡터의 합: 결론 157
싱글턴의 스레드 안전한 초기화 158
잠김 패턴의 이중 확인 159
성능 측정 160
스레드 안전한 마이어스 싱글턴 163
std::once_flag와 결합된 std::call_once 166
원자계 167
스레드 안전한 싱글턴 구현의 성능 수치들 170
CppMem 연속 최적화 171
CppMem 개요 172
CppMem: 비원자계 변수 176
CppMem: 잠김 180
CppMem: 시퀀스 일관성 원자계 182
CppMem: acquire-release 시맨틱 원자계 187
CppMem: 비원자계가 적용된 원자계 190
CppMem: 편안한 시맨틱 원자계 192
결론 194

CHAPTER 5 표준 템플릿 라이브러리의 병렬 알고리즘 195
실행 정책 196
알고리즘 198
새 알고리즘들 199
함수형 유산 203

CHAPTER 6 미래: C++20 205
원자계 스마트 포인터 206
스레드 안전한 단일 연결 리스트 207
확장 퓨처 208
std::future 208
std::async, std::packaged_task, std::promise 210
새 퓨처 생성하기 210
래치와 장벽 213
std::latch 214
std::barrier 214
std::flex_barrier 216
코루틴 217
제너레이터 함수 218
세부 내용 221
트랜잭션 메모리 223
ACI(D) 224
동기화 블록과 원자계 블록 224
transaction_safe 코드와 transaction_unsafe 코드 228
태스크 블록 229
fork와 join 229
define_task_block과 define_task_block_restore_thread 231
인터페이스 231
스케줄러 232

PART III 심화 _ 233
CHAPTER 7 도전 235
ABA 236
비유 236
비임계 ABA 237
잠김 없는 데이터 구조 237
ABA 문제 238
해결책 239
블로킹 문제 241
프로그램 불변식 깨기 243
데이터 경쟁 244
가짜 공유 246
변수의 라이프사이클 문제 246
움직이는 스레드 247
교착상태 249
경쟁 상태 250

CHAPTER 8 베스트 프랙티스 251
개괄 252
코드 리뷰 252
변형 가능한 데이터의 데이터 공유를 최소화하라 252
대기를 최소화하라 253
변형 불가능한 데이터를 먼저 사용하라 253
올바른 추상화를 찾아라 253
정적 코드 분석 도구를 사용하라 254
동적 강화 도구를 사용하라 254
메모리 모델 255
동기화에 volatile을 사용하지 마라 255
잠김 없는 프로그램을 만들지 마라 256
잠김 없는 프로그램이 불가피할 때는 잘 정립된 패턴을 사용하라 256
자신만의 추상화를 만들지 말고 언어가 제공하는 보장을 사용하라 256
멀티스레딩 257
스레드 257
데이터 공유 259
조건 변수 262
프로미스와 퓨처 265

CHAPTER 9 time 라이브러리 267
시점과 기간, 클록의 상호작용 268
시점 269
시점에서 캘린더 시간까지 269
유효한 시간 범위를 넘어 271
기간 272
계산 274
클록 276
정확도와 고정성 277
에포크 279
잠자기와 기다리기 281
관습 281
다양한 기다리기 전략 282

CHAPTER 10 용어 287

찾아보기 295

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.