HOME > Detail View

Detail View

C++ 멀티스레딩 정복하기 : 견고하면서도 병렬성과 병행성을 가지는 애플리케이션 작성법

C++ 멀티스레딩 정복하기 : 견고하면서도 병렬성과 병행성을 가지는 애플리케이션 작성법 (Loan 4 times)

Material type
단행본
Personal Author
Posch, Maya 김점갑, 역
Title Statement
C++ 멀티스레딩 정복하기 : 견고하면서도 병렬성과 병행성을 가지는 애플리케이션 작성법 / 마야 포쉬 지음 ; 김점갑 옮김
Publication, Distribution, etc
서울 :   에이콘,   2019  
Physical Medium
302 p. : 삽화 ; 24 cm
Varied Title
Mastering C++ multithreading : a comprehensive guide to developing effective multithreading applications in C++
ISBN
9791161752365 9788960772106 (Set)
General Note
색인수록  
Subject Added Entry-Topical Term
C++ (Computer program language) Threads (Computer programs)
000 00000cam c2200205 c 4500
001 000045971206
005 20190218114552
007 ta
008 190216s2019 ulka 001c kor
020 ▼a 9791161752365 ▼g 94000
020 1 ▼a 9788960772106 (Set)
035 ▼a (KERIS)BIB000014985766
040 ▼a 221028 ▼c 221028 ▼d 221028 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.133 ▼2 23
085 ▼a 005.133 ▼2 DDCK
090 ▼a 005.133 ▼b C110 2019
100 1 ▼a Posch, Maya ▼0 AUTH(211009)15092
245 1 0 ▼a C++ 멀티스레딩 정복하기 : ▼b 견고하면서도 병렬성과 병행성을 가지는 애플리케이션 작성법 / ▼d 마야 포쉬 지음 ; ▼e 김점갑 옮김
246 1 9 ▼a Mastering C++ multithreading : ▼b a comprehensive guide to developing effective multithreading applications in C++
260 ▼a 서울 : ▼b 에이콘, ▼c 2019
300 ▼a 302 p. : ▼b 삽화 ; ▼c 24 cm
500 ▼a 색인수록
650 0 ▼a C++ (Computer program language)
650 0 ▼a Threads (Computer programs)
700 1 ▼a 김점갑, ▼e▼0 AUTH(211009)44667
900 1 0 ▼a 마야 포쉬, ▼e
945 ▼a KLPA

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.133 C110 2019 Accession No. 111804993 Availability Available Due Date Make a Reservation Service B M
No. 2 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.133 C110 2019 Accession No. 151344960 Availability Available Due Date Make a Reservation Service M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Main Library/Monographs(3F)/ Call Number 005.133 C110 2019 Accession No. 111804993 Availability Available Due Date Make a Reservation Service B M
No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Sejong Academic Information Center/Science & Technology/ Call Number 005.133 C110 2019 Accession No. 151344960 Availability Available Due Date Make a Reservation Service M

Contents information

Book Introduction

멀티스레드와 병행성에 대한 깊이 있는 논의와 그 구현 방법을 다루고, 원자적 동작의 본질을 이해하고 코드 최적화에 유용하게 사용할 수 있는 방법을 배울 수 있는 책. 분산 컴퓨팅 환경에서 멀티스레드 애플리케이션을 구현하고 멀티스레딩을 채택한 C++ 기반의 GPGPU 애플리케이션 설계 방법을 익힌다.
멀티스레딩과 병행적 처리에 대한 지식을 넓히고자 하는 C++ 중급 개발자를 대상으로 한다. 이 책을 보려면 멀티스레딩에 대한 기본적 경험이 있어야 하고 명령행에서 C++ 개발 툴체인을 다루는 데 익숙해야 한다

멀티스레드와 병행성에 대한 깊이 있는 논의와 그 구현 방법을 다루고, 원자적 동작의 본질을 이해하고 코드 최적화에 유용하게 사용할 수 있는 방법을 배운다. 분산 컴퓨팅 환경에서 멀티스레드 애플리케이션을 구현하고 멀티스레딩을 채택한 C++ 기반의 GPGPU 애플리케이션 설계 방법을 익힌다.

■ 다양한 운영체제가 현재 멀티스레딩을 구현하는 방식
■ 새로운 애플리케이션의 설계 시 최적의 멀티스레딩 API 선택
■ 뮤텍스와 스핀락의 사용, 그 외의 동기화 개념 파악
■ 스레드 간의 안전한 데이터 전달 방법
■ 다양한 C++ 툴체인이 제공하는 API 지원 수준
■ 멀티스레드 코드의 일반적인 문제 해결 및 빠지기 쉬운 함정 파악
■ 원자적 동작의 본질을 이해하고 이들을 코드 최적화에 유용하게 사용할 수 있는 방법
■ 분산 컴퓨팅 환경에서의 멀티스레드 애플리케이션 구현
■ 멀티스레딩을 채택한 C++ 기반의 GPGPU 애플리케이션 설계


멀티스레딩과 병행적 처리에 대한 지식을 넓히고자 하는 C++ 중급 개발자를 대상으로 한다. 이 책을 보려면 멀티스레딩에 대한 기본적 경험이 있어야 하고 명령행에서 C++ 개발 툴체인을 다루는 데 익숙해야 한다.

1장, '멀티스레딩 검토'에서는 C++에서의 멀티스레딩을 요약하고 숙지하고 있어야 할 개념을 살펴본다. C++의 2011년 개정안에 추가된 네이티브 스레딩 지원을 사용하는 기본 멀티스레딩 예제를 살펴본다.
2장, '프로세서와 OS에서의 멀티스레딩 구현'에서는 1장에서 논의한 하드웨어 구현에서 제공되는 기본 기능을 바탕으로, OS가 어떻게 이들 기능을 사용해 애플리케이션에서 이들을 이용하는지 알아본다. 애플리케이션과 스레드가 서로 간섭하지 않도록 프로세스와 스레드가 메모리와 프로세서를 사용하는 방법도 논의한다.
3장, 'C++ 멀티스레딩 API'에서는 OS 수준의 API(Win32와 POSIX 등)와 프레임워크(Boost와 Qt, POCO 등)에서 제공되는 다양한 멀티스레딩 API를 알아본다. 이들 각 API를 실행, 다른 API와 비교해 그 차이점을 알아보고 독자의 애플리케이션에서 가질 수 있는 장단점을 살펴본다.
4장, '스레드 동기화와 통신'에서는 앞서 배운 주제에 대해 C++ 14 버전의 네이티브 스레딩 API를 사용해 구현된 고급 멀티스레딩 구현을 알아본다. 이를 통해 여러 스레드가 스레드 안전성 문제없이 통신할 수 있는 방법을 이해한다. 뮤텍스와 락, 조건 변수를 포함한 여러 유형의 동기화 메커니즘 간의 차이점도 다룬다.
5장, '네이티브 C++ 스레드와 기본 요소'에서는 스레드와 병행성, 로컬 스토리지를 비롯해 이 API에서 지원되는 스레드 안전성을 다룬다. 4장의 예제에 바탕을 두고 C++ 11과 C++ 14 버전의 완전한 기능 세트에 의해 제공되는 기능을 사용해 스레드 안전성을 확장하고 최적화하는 방법을 알아본다.
6장, '멀티스레드 코드의 디버깅'에서는 애플리케이션의 멀티스레드 성능을 분석하고 핫스팟을 탐지하며, 병행적 접근으로 발행하는 문제를 해결하고 방지하기 위해 Valgrind(Memcheck와 DRD, Helgrind 등) 같은 툴을 사용하는 방법을 습득한다.
7장, '모범 실전 사례'에서는 흔히 겪는 함정과 난제를 다룬다. 문제를 유발하기 전에 사전에 파악하는 방법을 알아본다. 또한 예제를 이용해 몇 가지 일반적인 상황과 예외적인 상황을 살펴본다.
8장, '원자적 동작 - 하드웨어와 작업하기'에서는 원자적 동작에 대해 세부적으로 다룬다. 원자적 동작이 무엇이며 최적으로 사용하는 방법을 알아본다. 여러 CPU 아키텍처에서 어떤 컴파일러 지원이 이뤄지는지 살펴보고 코드에 원자적 동작을 구현할 때 시간을 투자할 가치가 있는지 평가해본다. 또한 이런 최적화로 인해 코드의 이식성이 어떻게 제한되는지 알아본다.
9장, '분산 컴퓨팅에서의 멀티스레딩'에서는 이전 장들에서 배운 여러 내용을 멀티시스템과 클러스터 수준의 시스템에 적용해본다. OpenMPI 기반의 예제를 이용해 컴퓨터 클러스터 내의 노드같이 여러 시스템에서 멀티스레딩을 수행하는 방법을 알아본다.
10장, 'GPGPU에서의 멀티스레딩'에서는 GPGPU 애플리케이션(CUDA와 OpenCL 등)에서 멀티스레딩 사용법을 살펴본다. OpenCL 기반의 예제를 사용해 병렬로 작업을 실행하는 기본적인 멀티스레드 애플리케이션을 알아본다. 이전 장들에서 배운 내용을 비디오 카드와 그 파생 하드웨어(예를 들어 랙-마운트(rack-mounted) 벡터 프로세서 하드웨어)에서 처리할 수 있도록 이를 적용한다.


Information Provided By: : Aladin

Author Introduction

마야 포쉬(지은이)

소프트웨어 공학자로 이 업계와 전자, 로봇, AI 분야에 심취해 있다. 절친 트레버 퍼디(Trevor Purdy)와 함께 소프트웨어 개발 회사 니얀코(Nyanko)를 운영하며 다양한 게임 개발 프로젝트 업무를 진행 중이다. 이외에도 전 세계 기업을 대상으로 다양한 프리랜서 업무를 진행한다. 소프트웨어 작성 외에도 방정식을 풀고 소설 집필을 즐긴다. 닌텐도의 명작 <젤다의 전설: 시간의 오카리나>를 기반으로 한 이야기를 쓰고, 최근에는 생존 공포 소설 『Viral Desire』을 쓰기 시작했다. 디지털 도서관 웹사이트 스크리브드(Scribd) 프로필을 보면 전체 저작 목록을 볼 수 있다. 생화학과 로봇, 인체 해부에도 관심이 있다. 더 알고 싶다면 블로그(https://jinzouningen.wordpress.com)를 방문하자. 순수한 야망으로 가득 차 있는 듯하다.

김점갑(옮긴이)

삼성전자에서 GNU 컴파일러를 기반으로 ARM CORE 컴파일러 포팅/개발 프로젝트를 수행했다. 이후 보안 분야와 디바이스 드라이버에 관심을 두고서 데브그루를 공동으로 창업해 다양한 장치/보안 드라이버를 개발했고, 다수의 드라이버 강의와 세미나, 교육을 진행했다. (주)안랩의 기반 기술 팀에서 보안 관련 시스템 프로그램 개발 업무를 수행했다. 주요 번역서로는『Windows Internals 7/e Vol.1』(에이콘, 2018), 『THE GARBAGE COLLECTION HANDBOOK』(에이콘, 2016), 『실전 윈도우 디버깅』(에이콘, 2008), 『WDF』(에이콘, 2008), 『C++ 멀티스레딩 정복하기』(에이콘, 2018) 등이 있다. 지금은 제주에 살면서 여행과 사진에 흥미를 느끼고 있다.

Information Provided By: : Aladin

Table of Contents

1장. 멀티스레딩 검토 
__시작하기 
__멀티스레드 애플리케이션 
____메이크파일 
__그 밖의 애플리케이션 
__요약 

2장. 프로세서와 OS에서의 멀티스레딩 구현 
__프로세스와 스레드의 정의 
____x86에서의 태스크(32-비트와 64-비트) 
____ARM에서의 프로세스 상태 
__스택 
__멀티스레딩의 정의 
____플린의 분류 
____대칭 대 비대칭 멀티프로세싱 
____느슨하거나 단단하게 결합된 멀티프로세싱 
____멀티프로세싱과 멀티스레딩의 결합 
____멀티스레딩 유형 
__스케줄러 
__예제 애플리케이션 추적 
__상호 배제 구현 
____하드웨어 
____소프트웨어 
__요약 

3장. C++ 멀티스레딩 API 
__API 개요 
__POSIX 스레드 
____윈도우 지원 
____Pthreads 스레드 관리 
____뮤텍스 
____조건 변수 
____동기화 
____세마포어 
____스레드 로컬 스토리지 
__윈도우 스레드 
____스레드 관리 
____고급 관리 
____동기화 
____조건 변수 
____스레드 로컬 스토리지 
__상승 
__Qt 
____QThread 
____스레드 풀 
____동기화 
____QtConcurrent 
____스레드 로컬 스토리지 
__POCO 
____Thread 클래스 
____스레드 풀 
____스레드 로컬 스토리지 
____동기화 
__C++ 스레드 
__모두 합치면 
__요약 

4장. 스레드 동기화와 통신 
__안전 제일 
__스케줄러 
____고수준 관점 
____구현 
____요청 클래스 
____Worker 클래스 
__디스패처 
____메이크파일 
____출력 결과 
__공유 데이터 
____읽기-쓰기 락의 사용 
____공유 포인터의 사용 
__요약 

5장. 네이티브 C++ 스레드와 기본 요소 
__STL 스레딩 API 
____Boost.Thread API 
__2011 표준 
__C++14 
__C++17 
__STL 구성 
__스레드 클래스 
____기본 사용 
____인자 전달 
____반환 값 
____레드 이동하기 
____스레드 ID 
____슬립 
____양보(Yield) 
____분리(Detach) 
____스왑(Swap) 
__뮤텍스 
____기본 사용 
____타임드 뮤텍스 
____락 가드 
____고유 락 
____범위 락 
____재귀 뮤텍스 
____재귀 타임드 뮤텍스 
__공유 뮤텍스 
____공유 타임드 뮤텍스 
__조건 변수 
____Condition_variable_any 
____스레드 종료 시점에 모두에게 통지하기 
__퓨처 
____프라미스 
____Packaged_task 
____Async 
__원자적 요소 
__요약 

6장. 멀티스레드 코드의 디버깅 
__언제 디버깅을 시작해야 하나 
__단순한 디버거 
____GDB 
____멀티스레드 코드의 디버깅 
____브레이크포인트 
____백 트레이스 
__동적 분석 툴 
____제약 
____대안 
____Memcheck 
____Helgrind 
____pthreads API의 오사용 
____락 순서 문제 
____데이터 경쟁 
____DRD 
____기본 사용 
____기능 
____C++11 스레드 지원 
__요약 


7장. 모범 실전 사례 
__올바른 멀티스레딩 
__잘못된 기대-데드락 
__부주의-데이터 경쟁 
__만능이 아닌 뮤텍스 
__훌륭한 뮤텍스인 락 
__스레드 대 퓨처 
__초기화의 정적 순서 
__요약 

8장. 원자적 동작 - 하드웨어와 작업하기 
__원자적 동작 
____비주얼 C++ 
__GCC 
__메모리 순서 
____기타 컴파일러 
____C++11 원자적 요소 
____예제 
____비클래스 함수 
____예제 
____원자적 플래그 
____메모리 순서 
__요약 

9장. 분산 컴퓨팅에서의 멀티스레딩 
__분산 컴퓨팅이란 
____MPI 
____MPI 애플리케이션의 컴파일 
____클러스터 하드웨어 
__Open MPI 설치하기 
____리눅스와 BSD 
____윈도우 
__노드 간의 작업 분산 
____MPI 노드 설정하기 
____MPI 호스트 파일 생성하기 
____작업 실행하기 
____클러스터 스케줄러 사용하기 
__MPI 통신 
____MPI 데이터 유형 
____기본 통신 
____고급 통신 
____브로드캐스팅 
____분산과 수집 
__MPI 대 스레드 
__잠재적 문제 
__요약 

10장. GPGPU에서의 멀티스레딩 
__GPGPU 처리 모델 
____구현 
____OpenCL 
____일반적인 OpenCL 애플리케이션 
____OpenCL 버전 
__개발 환경 설정 
____리눅스 
____윈도우 
____OS X/MacOS 
__기본 OpenCL 애플리케이션 
__GPU 메모리 관리 
__GPGPU와 멀티스레딩 
____지연 시간 
__잠재적 문제 
__GPGPU 애플리케이션의 디버깅 
__요약

New Arrivals Books in Related Fields