본문 바로가기

리디북스 접속이 원활하지 않습니다.
강제 새로 고침(Ctrl + F5)이나 브라우저 캐시 삭제를 진행해주세요.
계속해서 문제가 발생한다면 리디북스 접속 테스트를 통해 원인을 파악하고 대응 방법을 안내드리겠습니다.
테스트 페이지로 이동하기


모던 C++로 배우는 동시성 프로그래밍 상세페이지

책 소개

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

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

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


저자 프로필

라이너 그림 Rainer Grimm

  • 경력 소프트웨어 아키텍트

2020.09.07. 업데이트 작가 프로필 수정 요청

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


저자 소개

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

역 : 배장열
그간 쌓은 강의, 개발, 번역 경험을 바탕으로 소프트웨어 관련 서적을 쓰고 만들고 있는 IT 전문 저술가입니다. 지금은 파이선을 비롯해 다양한 프로그래밍 언어 학습서를 쓰고 있습니다.

목차

PART I 서론
CHAPTER 1 모던 C++의 동시성
C++11과 C++14: 토대
메모리 모델
멀티스레딩
사례 연구
벡터의 합 계산하기
싱글턴의 스레드 안전한 초기화
CppMem의 연속 최적화
C++17: 표준 템플릿 라이브러리의 병렬 알고리즘
실행 정책
새 알고리즘들
C++20: 동시성 퓨처
원자계 스마트 포인터
확장 퓨처
래치와 장벽
코루틴
트랜잭션 메모리
태스크 블록
도전
베스트 프랙티스
time 라이브러리
용어

PART II 본론
CHAPTER 2 메모리 모델
계약
기반
도전
원자계
꼼꼼한 메모리 모델 vs 허술한 메모리 모델
원자계 플래그
클래스 템플릿 std::atomic
사용자 정의 원자계
원자계 연산들
원자계 자유 함수들
동기화 및 순서상 제약 조건
C++의 여섯 가지 메모리 모델
시퀀스 일관성
acquire-release 시맨틱
std::memory_order_consume
편안한 시맨틱
담장
메모리 장벽으로서의 담장
세 가지 담장
acquire 담장과 release 담장
원자계 변수의 동기화와 담장의 동기화

CHAPTER 3 멀티스레딩
스레드
생성
라이프사이클
인수
메서드
공유 데이터
뮤텍스
잠김
스레드 안전한 초기화
스레드 로컬 데이터
조건 변수
wait 작업 흐름
사라진 깨우기와 가짜 깨우기
태스크
스레드와 태스크
std::async
std::packaged_task
std::promise와 std::future

CHAPTER 4 사례 연구
벡터의 합 계산하기
벡터의 싱글스레딩 덧셈
공유 변수의 멀티스레딩 합
스레드 로컬 합
벡터의 합: 결론
싱글턴의 스레드 안전한 초기화
잠김 패턴의 이중 확인
성능 측정
스레드 안전한 마이어스 싱글턴
std::once_flag와 결합된 std::call_once
원자계
스레드 안전한 싱글턴 구현의 성능 수치들
CppMem 연속 최적화
CppMem 개요
CppMem: 비원자계 변수
CppMem: 잠김
CppMem: 시퀀스 일관성 원자계
CppMem: acquire-release 시맨틱 원자계
CppMem: 비원자계가 적용된 원자계
CppMem: 편안한 시맨틱 원자계
결론

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

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

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

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

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

CHAPTER 10 용어

찾아보기


리뷰

구매자 별점

0.0

점수비율

  • 5
  • 4
  • 3
  • 2
  • 1

0명이 평가함

리뷰 작성 영역

이 책을 평가해주세요!

내가 남긴 별점 0.0

별로예요

그저 그래요

보통이에요

좋아요

최고예요

별점 취소

구매자 표시 기준은 무엇인가요?

'구매자' 표시는 리디북스에서 유료도서 결제 후 다운로드 하시거나 리디셀렉트 도서를 다운로드하신 경우에만 표시됩니다.

무료 도서 (프로모션 등으로 무료로 전환된 도서 포함)
'구매자'로 표시되지 않습니다.
시리즈 도서 내 무료 도서
'구매자’로 표시되지 않습니다. 하지만 같은 시리즈의 유료 도서를 결제한 뒤 리뷰를 수정하거나 재등록하면 '구매자'로 표시됩니다.
영구 삭제
도서를 영구 삭제해도 ‘구매자’ 표시는 남아있습니다.
결제 취소
‘구매자’ 표시가 자동으로 사라집니다.

이 책과 함께 구매한 책


이 책과 함께 둘러본 책



본문 끝 최상단으로 돌아가기

spinner
모바일 버전