장바구니 담기 close

장바구니에 상품을 담았습니다.

코틀린 동시성 프로그래밍

코틀린 동시성 프로그래밍

  • 미구엘엔젤카스티블랑코토레스
  • |
  • 에이콘출판
  • |
  • 2020-05-29 출간
  • |
  • 316페이지
  • |
  • 188 X 235 X 18 mm
  • |
  • ISBN 9791161754222
판매가

28,000원

즉시할인가

25,200

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
25,200

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




★ 이 책의 구성 ★

1장, ‘Hello, Concurrent World!’에서는 동시성을 쉽게 이해할 수 있는 내용 위주로 구성했다. 프로세스, 스레드, 코루틴과 같은 개념으로 시작해서 동시성과 병렬처리를 비교해 소개한다. 동시성을 코딩할 때 부딪치는 일반적인 난관과 동시성에 대한 코틀린의 접근 방식 그리고 이 책에서 전체적으로 등장하는 용어를 소개한다.
2장, ‘코루틴 인 액션’에서는 코루틴을 개발하는 첫 번째 실습으로 안드로이드 프로젝트를 생성한다. 이를 통해 코루틴으로 네트워킹하는 방식, 비동기 작업을 위한 유형의 다양한 방식, 각 방식의 장점, 저자가 추천하는 방식을 설명한다.
3장, ‘라이프사이클과 에러 핸들링’에서는 코루틴의 라이프 사이클과 코루틴을 사용할 때 발생할 수 있는 오류의 해결 방법을 소개하고, 2장에서 생성한 RSS 리더에 에러 핸들링을 추가해 실제 오류를 어떻게 처리하는지 설명한다.
4장, ‘일시중단 함수와 코루틴 컨텍스트’에서는 코루틴의 필수 컨텍스트와 코루틴이 동작을 정의하고 수정하는 설정을 소개한다. 코루틴의 스레드의 정의와 에러 핸들링에 필요한 컨텍스트를 다룬다.
5장, ‘이터레이터, 시퀀스 그리고 프로듀서’에서는 데이터 소싱과 처리를 일시 중단하는 데 필요한 프리미티브를 소개한다. 언제, 어떻게, 이러한 프리미티브를 사용해야 하는지와 온디맨드 데이터 로딩을 구현하는 방식을 상세히 살펴본다.
6장, ‘채널, 통신을 통한 메모리 공유’에서는 매우 중요한 채널의 개념을 설명한다. 다양한 유형의 유즈케이스와 차이점으로 시작해 애플리케이션 개발 방식을 설명하며, RSS 피드 그룹에서 채널을 이용해 어떻게 동시 검색할 수 있는지 살펴본다.
7장, ‘스레드 한정, 액터 그리고 뮤텍스’에서는 원자성 위반이나 레이스 컨디션과 같은 에러를 방지하기 위해 사용되는 세 개의 코루틴 프레임워크 도구를 소개한다. 또한 동시성 코드를 작성할 때 기초가 되는 스레드 한정과 액터 그리고 뮤텍스에 대해 배울 수 있다.
8장, ‘동시성 코드 테스트와 디버깅’에서는 테스트를 어떻게 최대한 활용할 수 있는지 다룬다. 기능 테스트와 동시성 코드를 테스트할 수 있는 세 개의 구간 그리고 프로젝트 설정을 통해 로그를 활용하는 방법을 알아본다. 다른 스레드 또는 코루틴에서 발생하는 노이즈를 피하기 위해 동시성 코드를 디버그하는 방법도 살펴본다.
9장, ‘코틀린의 동시성’에서는 내부 실행 단계에서의 일시 중단 함수와 스레드 시행 그리고 예외 핸들링을 분석한다. 컴파일러의 역할과 stdlib 및 코루틴 라이브러리에 존재하는 여러 개의 클래스를 구현하는 방법을 설명하고 있어 내부 동작 방식을 상세히 이해할 수 있다.

★ 옮긴이의 말 ★

최신 애플리케이션은 고성능의 멀티 코어 CPU 환경을 최대한 활용하도록 개발되고 있다. 이런 환경에서는 동시성을 제대로 이해하고 고려해야 할 필요가 더욱 절실하다. 코틀린은 2017년 구글이 안드로이드의 개발 언어로 공식 지정된 후, 안드로이드 생태계에서 메인 개발 언어로 자리매김하고 있다. 또한 코틀린은 동시성을 뒷받침하기 위해 다양한 언어적 지원 기능을 제공하고 있다.
기존 Java/Android 동시성 프레임워크가 제공하는 단점들을 코루틴을 통해 훨씬 쉽고 효과적으로 처리할 수 있으며 코틀린이 언어적으로 제공하는 다양한 기본형들을 활용해 넌 블로킹, 비동기 코드를 마치 동기 코드처럼 쉽게 작성할 수 있다.
이 책은 코틀린의 동시성을 학습하기 위해 필요한 코루틴 개념과 동시성, 병렬성의 차이점을 그림으로 쉽게 설명해 코틀린에서 멀티스레드 애플리케이션을 만들기 위해 꼭 알아야 하는 기본 개념을 이해할 수 있다. 코틀린의 기본형을 활용하는 실제 예제를 만들면서 스레드와 코루틴 간의 통신 방법과 비동기 애플리케이션을 개발하면서 오류와 예외 처리하는 방법을 익히고 멀티 코어 처리를 활용하는 방법도 배울 수 있다. 코틀린의 동시성 프로그램 기법과 동시성의 내부 동작 방식에 대한 이해도를 높일 수 있는 기회가 되리라 기대한다.


목차


1장. Hello Concurrent World

__프로세스, 스레드, 코루틴
____프로세스
____스레드
____코루틴
____내용 정리
____동시성에 대해
____동시성은 병렬성이 아니다
____CPU 바운드와 I/O 바운드
____CPU 바운드 알고리즘에서의 동시성과 병렬성
____I/O 바운드 알고리즘에서의 동시성 대 병렬성
____동시성이 어려운 이유
__코틀린에서의 동시성
____넌 블로킹
____명시적인 선언
____코틀린 동시성 관련 개념과 용어
__요약

2장. 코루틴 인 액션

__안드로이드 스튜디오 다운로드 및 설치
__코틀린 프로젝트 생성하기
__코루틴 지원 추가하기
__안드로이드의 UI 스레드
____CallFromWrongThreadException
____NetworkOnMainThreadException
____백그라운드에서 요청하고, UI 스레드에서 업데이트
__스레드 생성
____CoroutineDispatcher
____디스패처에 코루틴 붙이기
__네트워킹 사용 권한 추가
__서비스 호출을 위한 코루틴 생성
__UI 요소 추가
____UI가 블로킹되면 발생하는 일
__처리된 뉴스의 수량 표시
__UI 디스패처 사용
____플랫폼별 UI 라이브러리
__요청 보류 여부를 위한 비동기 함수 생성
____비동기 호출자로 감싸인 동기 함수
____미리 정의된 디스패처를 갖는 비동기 함수
____유연한 디스패처를 가지는 비동기 함수
____더 좋은 방식을 선택하기 위한 방법
__요약

3장. 라이프 사이클과 에러 핸들링

__잡과 디퍼드
____잡
____디퍼드
__상태는 한 방향으로만 이동
____최종 상태의 주의 사항
__RSS - 여러 피드에서 동시에 읽기
____피드 목록 지원
____스레드 풀 만들기
____데이터를 동시에 가져오기
____응답 병합
____동시 요청 테스트
____넌 해피 패스(Non-happy path) - 예기치 않은 중단
____디퍼드가 예외를 갖도록 하기
____예외를 무시하지 말 것!
__요약

4장. 일시 중단 함수와 코루틴 컨텍스트

__RSS 리더 UI 개선
____각 피드에 이름 부여
____피드의 기사에 대한 자세한 정보 가져오기
____스크롤이 가능한 기사 목록 추가
____기사 별 레이아웃
____정보 매핑을 위한 어댑터
____액티비티에 어댑터 연결
____새 UI 테스트
__일시 중단 함수
____동작 중인 함수를 일시 중단
__코루틴 컨텍스트
____디스패처
____예외 처리
____Non-cancellable
__컨텍스트에 대한 추가 정보
____컨텍스트 결합
____withContext를 사용하는 임시 컨텍스트 스위치
__요약

5장. 이터레이터, 시퀀스 그리고 프로듀서

__일시 중단 가능한 시퀀스 및 이터레이터
__값 산출
__이터레이터
____이터레이터와의 상호 작용
__시퀀스
____시퀀스와 상호 작용
____시퀀스는 상태가 없다
____일시 중단 피보나치
____피보나치 수열 작성
____피보나치 이터레이터 작성
__프로듀서
____프로듀서 만들기
____프로듀서와 상호 작용
____프로듀서를 사용한 일시 중단 피보나치 수열
__프로듀서 인 액션
____어댑터에서 더 많은 기사 요청
____온 디멘드 피드를 가져 오는 프로듀서 만들기
____UI의 목록에 기사 추가하기
__요약

6장. 채널 - 통신을 통한 메모리 공유

__채널 이해
____스트리밍 데이터 사례
____분산 작업 사례
__채널 유형과 배압
____언버퍼드 채널
____버퍼드 채널
__채널과 상호 작용
____SendChannel
____ReceiveChannel
____읽기 전 유효성 검사
____채널 인 액션
____협업 검색 구현하기
__요약

7장. 스레드 한정, 액터 그리고 뮤텍스

__원자성 위반
____원자성의 의미
__스레드 한정
____스레드 한정의 개요
____코루틴을 단일 스레드로 한정
__액터
____액터란?
____액터 생성
____액터를 사용해 기능 확장
____액터 상호 작용에 대한 추가 정보
__상호 배제
____상호 배제 이해
____상호 배제와 상호 작용
__휘발성 변수
____스레드 캐시
____@Volatile
____@Volatile이 스레드 안전 카운터 문제를 해결하지 못하는 이유
____@Volatile을 사용하는 경우
__원자적 데이터 구조
__액터 인 액션
____UI에 라벨 추가
____카운터로 사용할 액터 만들기
____결과가 로드될 때 카운터 증가시키기
____UI가 업데이트에 반응하도록 채널 추가하기
____채널을 통해 업데이트된 값 보내기
____변경사항에 대한 UI 업데이트
____구현 테스트
____새로운 검색 시 카운터 재설정하기
__요약

8장. 동시성 코드 테스트와 디버깅

__동시성 코드 테스트
____가정을 버려라
____나무가 아닌, 숲에 집중하라
____테스트에 대한 추가 조언
__테스트 작성
____결함이 있는 UserManager 작성하기
____kotlin-test 라이브러리 추가
____해피 패스 테스트 추가
____에지 케이스를 위한 테스트
____문제점 식별
____중단 해결
____테스트 재시도
__디버깅
____로그에서 코루틴 식별
____디버거에서 코루틴 식별
____조건부 브레이크 포인트
__복원력과 안정성
__요약

9장. 코틀린의 동시성 내부

__연속체 전달 스타일
____연속체
____suspend 한정자
____상태 머신
__컨텍스트 전환
____스레드 전환
____예외 처리
__요약

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 : 070-4821-5101
교환/반품주소
  • 부산광역시 부산진구 중앙대로 856 303호 / (주)스터디채널 / 전화 : 070-4821-5101
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.