나에게 필요한 지식과 기술을 검색해 보세요.

Win32 멀티스레드 프로그래밍

지은이

애런 마이클 코헨, 마이크 우드링

옮긴이

김기정

출간일

2001.03.23

레벨

중고급

평점

3(1명)

정가

32,000

판매가

28,800

총 결제 금액

10%

28,800

적립 예정

1,440P

최근 윈도우 95, 98과 NT 또는 리눅스처럼 멀티스레드를 지원하는 운영체제가 증가해서 좀더 쉽게 스레드를 이용한 프로그램을 작성할 수 있게 되었다. 멀티스레드 프로그래밍은 고급 프로그래머뿐만 아니라 일반적인 프로그래머에게도 기본적인 기술로 관심을 얻고 있으며, 이제 멀티스레드 프로그래밍은 프로그래머라면 반드시 알아야 할 기술로 자리잡고 있다.

이 책은 Win32의 멀티스레드 프로그래밍을 자세하게 설명하고 있는 전문 서적이다. Win32가 POSIX 스레드와 같은 표준적인 스레드를 지원하고 있지는 않지만, Win32 스레드에 사용되는 뮤텍스, 세마포어와 같은 동기화 기법들은 일반적으로 스레드를 지원하는 운영체제가 제공하는 공통적인 개념이다. 따라서 멀티스레드 프로그래밍에서 중요한 것은 문법이 아니라 스레드의 동작 원리에 대한 개념을 이해하는 것이기 때문에 스레드 프로그래밍의 기본 요소와 핵심 개념을 깊이 이해하고, 나아가서 리눅스, 유닉스와 같은 다른 플랫폼에서도 스레드 프로그래밍을 할 수 있는 기본 소양을 얻을 수 있다.

이 책은 스레드 프로그래밍에서 가장 중요한 동기화 부분에 대부분의 지면을 할애하고 있다. 이와 더불어 Win32 스레드를 C++ 클래스 라이브러리로 재구성하여 Mcl이라는 라이브러리를 제공하고 있다. 이 라이브러리를 제공함으로써 훨씬 쉽게 멀티스레드 프로그래밍을 할 수 있고, 디버깅하는데 필요한 시간을 줄일 수 있다. 이 책의 가장 큰 장점은 수많은 예제를 제공한다는 점에 있다. 먼저 기본적인 개념을 설명하고, 대부분의 경우에 간결한 예제 프로그램을 덧붙여서 제공한다. 실제로 이런 예제 프로그램을 실행해보면 좀더 쉽게 멀티스레드 프로그래밍의 개념에 접근할 수 있다.

이 책의 주요 내용

이 책에서는 멀티스레드 프로그래밍의 개념을 알아보고, 멀티스레드를 이용하여 효율적이고 복잡한 응용 프로그램을 능숙하게 작성할 수 있도록 도와준다. 또한 멀티스레드 프로그래밍의 원리를 보여주기 위해서 뮤텍스나 세마포어를 사용하는 기초적 스레드 동기화에서부터 다시 사용할 수 있는 스레드 풀을 만들거나 유예된 처리 큐를 구현하는 고급 주제까지 실제 응용 프로그램과 주의 깊게 작성된 예제를 사용하여 설명하고 있다. 몇 가지 주제를 소개하면 다음과 같다.

  • 윈도우 운영체제가 스레드를 다루는 방법
  • Win32 API 멀티스레딩 도구
  • 스레드에 안전한 동적 연결 내장 함수(DLL)를 제작하는 기법
  • 스레드 동기화의 고급 기법
  • 스레드 동기화의 기본 시나리오
  • 멀티스레드 사용자 인터페이스를 제작하는데 사용하는 공통된 디자인
  • 멀티스레드 응용 프로그램의 오류 수정 작업
이 책에 포함된 CD-ROM은 멀티스레드 프로그래밍을 위한 저자의 C++ 내장 함수 Mcl을 포함하고 있다. Mcl은 멀티스레드 API 함수의 래퍼로 복잡한 멀티스레드 시나리오를 간단히 지원할 수 있게 해 준다. MFC를 사용하는 프로그래머에게는 MFC와의 호환성을 위해서 Mcl4Mfc 내장 함수를 추가로 제공한다.

저자

목차

역자 서문
차례
서문

1장. 소개


멀티스레드 프로그래밍이란 무엇인가?
왜 멀티스레드 프로그램을 작성하는가?
스레드를 사용하면 안 되는 경우
멀티스레드 프로그래밍으로 넘어가기 

2장. 스레드 스케줄링과 기본 개념

스레드 스케줄링
멀티스레드 프로그래밍 개념

3장. 프로세스와 스레드 API

커널 객체
프로세스
스레드 역학
프로세스 수명에 대한 재조명

4장. 스레드 동기화 방법

Interlocked 함수
임계 영역
WaitForSingleObject와 WaitForMultipleObjects 함수
뮤텍스
세마포어
이벤트

5장. 스레드간 통신

공유 메모리와 메모리 맵 파일
익명 파이프
스레드와 메시지 처리
MsgWaitForMultipleObjects 함수

6장. Mcl: 멀티스레드 프로그래밍을 위한 C++ 클래스 라이브러리

CMcl 라이브러리 클래스 계층도
CMcl 클래스 라이브러리 구현

7장. Mcl: 상위 레벨 클래스

CMclShreadMemory
CMclLinkedLists
CMclMailBox
CMclMonitor
CMcl 클래스 라이브러리를 위한 Makefile

8장. 기초적 스레드 동기화

자원의 상호 배제
단일 허용 관문
경계적 대기
제한된 자원에 대한 경쟁
생산자와 소비자 문제의 변형

9장. 고급 캡슐화 기법

객체와 스레드 동기화
스레드 로컬 저장소

10장. 고급 스레드 관리 기법

요구에 따른 스레드
스레드 풀

11장. 멀티스레드 프로그램에서의 DLL

32 비트 DLL의 상세 분석과 의미 구조
DllMain 함수
함수와 데이터의 익스포팅
함수와 데이터의 임포팅
신중한 형태의 DLL을 구현하기
DLL에서의 정적 C++ 객체와 전역 C++ 객체

12장. 멀티스레드 사용자 인터페이스와 MFC

Win32 윈도우 시스템의 기본 구조
멀티스레드 프로그램과 사용자 인터페이스
왜 MFC를 사용하는가?
멀티스레드 프로그램에서 MFC 사용하기
MFC 프로그램에서 Mcl 사용하기
Mcl4Mfc 클래스 라이브러리

13장. 기초적인 멀티스레드 GUI 설계

세 가지 기본 디자인 패턴
스스로 움직이는 컨트롤
식사하는 철학자 문제의 애니메이션을 이용한 시뮬레이션
자발적인 다이얼로그 박스

14장. 구조적 예외 처리

구조적 예외 처리의 개요
구조적 예외 처리의 일반적인 사용 예
예외 처리를 위한 전략
C++와 구조적 예외 처리의 혼용

15장. 멀티스레드 프로그램 디버깅

병렬적으로 사고하기
하이젠버그 불확실성 원리
코드를 단계별로 훑어라
비주얼 C++ 스레드와 콜스택 윈도우 사용하기
어떤 것이 주 스레드인가?
어떤 스레드를 디버깅하는지 파악해라
디버깅하는 동안 발생하는 문맥 교환에 주의해라
시간은 디버거 안에서도 기다리지 않는다
어떤 스레드가 어떤 윈도우를 소유하고 있는지 파악해라
OutputDebugString을 사용해라
메모리를 나눠라

후기

부록 A
부록 B
찾아보기

리뷰

32,000

10%

28,800