간편결제, 신용카드 청구할인
네이버페이 1%
(네이버페이 결제 시 적립)
NH(올원페이)카드 12% (19,800원)
(3만원 이상 결제/최대 1만원 할인)
북피니언 롯데카드 30% (15,750원)
(최대할인 3만원 / 3만원 이상 결제)
하나SK 북&카드 30% (15,750원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (18,000원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (20,250원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (20,930원)
(최대할인 3만원 / 3만원 이상 결제)
Close

모던 C++로 배우는 동시성 프로그래밍 : C++ 프로그래머라면 반드시 알아야 할 동시성의 모든 것

원제 : Concurrency with Modern C++

2013년 9월 9일 이후 누적수치입니다.

판매지수 413
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

25,000원

  • 22,500 (10%할인)

    1,250P (5%적립)

배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서

  • 사은품(2)

책소개

C++ 프로그래머라면 반드시 알아야 할 동시성의 모든 것!

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

출판사 서평

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

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

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

추천사

이 책은 모던 C++의 동시성 프로그래밍에 익숙해질 수 있는 실용적인 안내서입니다. C++ 메모리 모델부터 시작해 실행 가능한 풍부한 예제 코드로 C++ 멀티스레딩 기술을 습득할 수 있으며, 사례 연구는 가려운 곳을 긁어 주기에 충분합니다. 미래의 동시성 기능을 다루는 부분은 정말 마음에 듭니다.
- Bart Vandewoestyne / 에스터라인의 수석 소프트웨어 개발 엔지니어

라이너 그림의 C++ 동시성 책은 기존 C++ 표준뿐만 아니라 향후 C++20 표준에서 변화할 내용까지 그 이론과 실제를 두루두루 다룬 정말 보기 드문 역작입니다. 또한, 쉬운 설명과 풍부한 예제 코드, 모범 사례를 통해 주제마다 세부 내용까지 깊이 있게 설명하고 있습니다. 한마디로 풍부한 내용이 돋보이는 필독서입니다.
- Ian Reeve / 델의 수석 스토리지 소프트웨어 엔지니어

목차

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

본문중에서

C++의 동시성이 생소한 독자는 큰 그림을 그리기 위해 서론부터 읽어야 할 것이다. 큰 그림을 그렸다면 본론으로 나아갈 준비는 끝난 셈이다. 이 책을 처음 읽을 때는 궁금한 나머지 직접 살펴봐야겠다고 생각하지 않은 이상 메모리 모델을 건너뛰는 것이 좋다. 사례 연구는 메모리 모델을 기본적으로 이해하고 있어야 생각할 수 있을 만큼 어려운 이론을 실제로 적용하는 데 도움이 될 것이다.
(/ p.15)

지금부터는 기본 빌딩 블록이었던 std::atomic_flag에서 고급 원자계로 한 걸음 더 들어가 보자. 살펴볼 대상은 std::atomic이라는 클래스 템플릿이다. 불(bool)이나 정수 관련 타입, 포인터를 위한 부분 및 전체 특수화는 std::atomic_flag보다 더욱더 강력한 인터페이스를 제공한다. 반면, 단점은 이 특수화가 잠김 없음(lock-free)을 보장하지 않는다는 것이다.
(/ p.27)

변형 가능한(mutable) 공유 데이터는 데이터 경쟁(data race)에 취약하므로 동기화만 생각하는 것이 상황을 깔끔하게 정리하는 지름길이다. 비동기 읽기나 쓰기를 데이터에 동시에 수행하면 프로그램은 정의되지 않은 동작을 보인다.
(/ p.83)

성능 수치 자체에 너무 매달리지 않는 것이 좋다. 리눅스와 윈도우에서 알고리즘을 달리한 결과 수치는 그렇게 큰 의미가 없다. 그보다는 어느 알고리즘이 동작하고 어느 알고리즘이 동작하지 않는지 추측할 수 있는 일종의 촉을 가지는 것이 중요하다. 여기서는 리눅스 데스크톱의 성능 수치를 절대적인 기준으로 윈도우 랩톱과 비교하는 일은 없을 것이다. 다만, 어떤 알고리즘이 리눅스나 윈도우에서 더 나은 성능을 보이는지 판단하는 척도로서만 생각할 것이다.
(/ p.136)

작은 프로그램으로 시작해 조금씩 개선해 나간 것이 대단히 바람직했다. 먼저, 각 단계마다 스레드의 교차 실행을 늘릴 수 있다. 그렇게 하면 x와 y의 값도 더 많아질 것이다. 그다음으로, 프로그램의 난도가 높아진다. 작은 프로그램이지만 CppMem은 매우 중요한 서비스를 제공한다.
(/ p.194)

저자소개

라이너 그림(Rainer Grimm) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

팀 리더와 강사로 20년 넘게 근무한 베테랑 소프트웨어 아키텍트다. 시간이 날 때면 C++, 파이썬, 하스켈 같은 주제의 기사를 즐겨 읽고, 콘퍼런스에도 자주 참가한다. 2016년부터는 회사를 나와 모던 C++와 파이썬을 주제로 하는 세미나를 조직하여 지금까지 이끌고 있다.

저자의 다른책

전체보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

개인 개발자이자 IT 전문 번역자다. 《스케치로 시작하는 아두이노 프로그래밍(제2판)》, 《마인크래프트로 배우는 파이썬 프로그래밍》, 《리눅스 바이블(제9판)》 등을 번역했다.

이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

    리뷰

    0.0 (총 0건)

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    0.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용