책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 윈도우 프로그래밍
· ISBN : 9788960772885
· 쪽수 : 1052쪽
책 소개
목차
1부 개념
1장 개요
___동시성을 사용해야 하는 이유
___프로그램 구조와 동시성
___병렬화 계층
___동시성을 사용하면 안 되는 경우
___정리
___참고 문헌
2장 동기화와 시간
___프로그램 상태 관리
______공유 상태/비공개 상태 식별
______상태 기계와 시간
______격리성
______불변성
___동기화: 종류와 기법
______데이터 동기화
______조정과 제어 동기화
___정리
___참고 문헌
2부 메커니즘
3장 스레드
___스레드의 세부 사항
______윈도우 스레드란?
______CLR 스레드란?
______명시적 스레딩과 대안
___스레드의 탄생과 죽음
______스레드 생성
______스레드 종료
______DllMain
______스레드 로컬 저장소
___정리
___참고 문헌
4장 스레드 고급 활용
___스레드 상태
______유저 모드 스레드 스택
______내부 데이터 구조(KTHREAD, ETHREAD, TEB)
______컨텍스트
___스레드 생성과 종료 동작 원리
______스레드 생성 과정
______스레드 종료 과정
___스레드 스케줄링
______스레드 상태
______스레드 우선순위
______퀀텀
______우선순위와 퀀텀 조정
______실행 중지와 양보
______스레드 중단
______선호도: 특정 CPU를 선택해 실행
___정리
___참고 문헌
5장 윈도우 커널 동기화
___기본 개념: 시그널과 대기
______커널 객체를 사용하는 이유
______원시 코드에서 대기 처리
______관리되는 코드
______APC
___커널 객체 사용
______뮤텍스
______세마포어
______뮤텍스와 세마포어를 이용한 예제: 차단/유한 큐
______자동 리셋 이벤트/매뉴얼 리셋 이벤트
______대기 가능 타이머
______객체 시그널과 원자적인 대기
______커널 객체 디버깅
___정리
___참고 문헌
6장 데이터와 제어 동기화
___상호 배제
______Win32 임계 구역
______CLR 락
___읽기/쓰기 락
______윈도우 비스타의 가벼운 읽기/쓰기 락
______닷넷 프레임워크의 가벼운 읽기/쓰기 락
______닷넷 프레임워크의 레거시 읽기/쓰기 락
___조건 변수
______윈도우 비스타 조건 변수
______닷넷 프레임워크 모니터
______보호된 영역
___정리
___참고 문헌
7장 스레드 풀
___스레드 풀 101
______세 가지 방법: 윈도우 비스타와 윈도우 레거시, CLR
______공통 기능
___윈도우 스레드 풀
______윈도우 비스타 스레드 풀
______레거시 Win32 스레드 풀
___CLR 스레드 풀
______작업 아이템
______I/O 완성 포트
______타이머
______등록된 대기
______기억할 것: 스레드를 소유하면 안 됨
______스레드 풀 스레드 관리
______디버깅
______사례 연구: 스레드 풀의 최상위에서 우선순위와 격리 계층화
___스레드 풀을 사용할 때 성능
___정리
___참고 문헌
8장 비동기 프로그래밍 모델
___비동기 프로그래밍 모델
______만남: 네 가지 방법
______IAsyncResult 구현
______닷넷 프레임워크에서 APM이 사용되는 장소
______ASP 닷넷 비동기 페이지
___이벤트 기반의 비동기 패턴
______기본 개념
______취소 지원
______진도 보고와 증가 결과 지원
______닷넷 프레임워크에서 EAP가 사용되는 장소
___정리
___참고 문헌
9장 파이버
___파이버 개요
______긍정과 부정적인 측면
___파이버 사용
______새로운 파이버 생성
______스레드를 파이버로 변환
______스레드가 파이버인지 확인
______파이버 간의 전환
______파이버 삭제
______현재 스레드 전환 예제
___추가적인 파이버 관련 주제
______파이버 지역 저장소
______스레드 관련성
______사례 연구: 파이버와 CLR
___사용자 모드 스케줄러 구축
______구현
______스택 있는 차단과 스택이 없는 차단
___정리
___참고 문헌
3부 테크닉
10장 메모리 락과 락 없는 프로그래밍
___메모리 읽기와 쓰기 재배치
______실행되는 것이 항상 작성한 것과 동일한 건 아니다
______장벽으로서 임계 영역
______데이터 종속과 재배치에의 영향
___하드웨어 원자성
______일반 읽기와 쓰기의 원자성
______상호 락된 동작
___메모리 일관성 모델
______하드웨어 메모리 모델
______메모리 장벽
______닷넷 메모리 모델
______락 없는 프로그래밍
___낮은 락 코드 예제
______지연 초기화와 이중 검사 락
______비차단 스택과 ABA 문제
______데커 알고리즘 다시 보기
___정리
___참고 문헌
11장 동시성 위험 요소
___정확성 위험 요소
______데이터 경쟁
______재귀와 재진입
______락과 프로세스 종료
___라이브 위험 요소
______데드락
______놓친 깨움(놓친 펄스와 동일)
______라이브락
______락 수송
______스탬피드
______두 단계 춤
______우선순위 도치와 기아
___정리
___참고 문헌
12장 병렬 컨테이너
___소단위 락
______배열
______FIFO 큐
______연결 리스트
______사전(해시 테이블)
___락 없음
______일반 목적의 락 없는 FIFO 큐
______큐를 훔치는 작업
___조직 컨테이너
______생산자/소비자 데이터 구조
______장애물을 가진 단계적 계산
___정리
___참고 문헌
13장 데이터와 태스크 병렬 처리
___데이터 병렬성
______루프와 반복
___태스크 병렬성
______포크/조인 병렬성
______데이터 흐름 병렬성(미래와 약속)
______재귀
______파이프라인
______검색
___메시지 기반 병렬성
___오류에 대한 우려
______동시성 예외
______취소
___정리
___참고 문헌
14장 성능과 확장성
___병렬 하드웨어 구조
______SMP와 CMP, HT
______슈퍼 스칼라 실행
______메모리 계층
______비주얼 스튜디오의 프로파일링
___속도 향상: 병렬 코드와 순차 코드
______병렬 사용 결정
______병렬성 성능 향상 측정
______암달의 법칙
______임계 경로와 부하 불균형
______가비지 컬렉션과 확장성
___반복 대기
______윈도우에서 제대로 대기하는 방법
______유일 반복 락
______Mellor-Crummey-Scott(MCS) 락
___정리
___참고 문헌
4부 시스템
15장 입력과 출력
___중첩된 I/O
______중첩된 객체
______Win32 비동기 I/O
______닷넷 프레임워크 비동기 I/O
___I/O 취소
______현재 스레드에 비동기 I/O 취소
______다른 스레드에 동기 I/O 취소
______다른 스레드에 비동기 I/O 취소
___정리
___참고 문헌
16장 그래픽 사용자 인터페이스
___GUI 스레딩 모델
______STA
______반응성
___닷넷 비동기 GUI 특성
______닷넷 GUI 프레임워크
______동기 컨텍스트
______비동기 동작
______편리한 패키지: BackgroundWorker
___정리
___참고 문헌
5부 부록
부록 A 동시성 닷넷 프로그램에 재사용 가능한 라이브러리 설계
___동시성에 관한 고견
___세부 사항
______락 모델
______락 사용
______안전성
______스케줄링과 스레드
______확장성과 성능
______차단
___참고 문헌
부록 B 닷넷 병렬 프로그래밍 확장
___태스크 병렬 라이브러리
______미처리 예외
______부모와 자식
______취소
______미래
______지속
______태스크 관리자
______전체 요약: 유용한 병렬 클래스
______자체 복제 태스크
___병렬 LINQ
______버퍼링과 병합
______순서 유지
___동기 프리미티브
______ISupportsCancelation
______CountdownEvent
______LazyInit
______ManualResetEventSlim
______SemaphoreSlim
______SpinLock
______SpinWait
___동시성 컬렉션
______BlockingCollection
______ConcurrentQueue
______ConcurrentStack
___참고 문헌