이미 소장하고 있다면 판매해 보세요.
|
CHAPTER 1 시작하며
1 스레드란? 2 동시성 vs 병렬성 3 싱글스레드 기반 자바스크립트 4 숨겨진 스레드 5 C언어의 스레드 : Happycoin으로 부자 되세요 __5.1 메인 스레드 1개로 구현하기 __5.2 워커 스레드 4개로 구현하기 CHAPTER 2 브라우저 1 전용 워커 __1.1 전용 워커를 사용한 Hello World 코드 __1.2 전용 워커 중급 버전 2 공유 워커 __2.1 공유 워커를 사용한 Hello World 코드 __2.2 공유 워커 중급 버전 3 서비스 워커 __3.1 서비스 워커를 사용한 Hello World 코드 __3.2 서비스 워커 중급 버전 4 메시지 패싱 개요 __4.1 RPC 패턴 __4.2 명령어 분배 패턴 __4.3 종합 버전 CHAPTER 3 Node.js 1 스레드가 없었을 시절 2 worker_threads 모듈 __2.1 workerData __2.2 MessagePort 3 Happycoin 다시 보기 __3.1 메인 스레드 1개로 구현하기 __3.2 워커 스레드 4개로 구현하기 4 Piscina를 통한 워커 풀 5 Happycoin으로 가득 찬 풀 CHAPTER 4 공유 메모리 1 공유 메모리 입문 __1.1 브라우저에서 공유 메모리 사용하기 __1.2 Node.js의 공유 메모리 2 SharedArrayBuffer와 TypedArrays 3 데이터 가공을 위한 Atomic 메서드 4 원자성에 대한 논의 5 데이터 직렬화 __5.1 Boolean 타입 __5.2 문자열 타입 __5.3 객체 타입 CHAPTER 5 공유 메모리 중급 1 코디네이션을 위한 Atomic 메서드 __1.1 Atomics.wait() __1.2 Atomics.notify() __1.3 Atomics.waitAsync() 2 스레드가 깨어나는 타이밍과 예측 가능성 __2.1 비결정적 방식의 예시 __2.2 스레드 준비 여부 감지하기 3 예시 애플리케이션: 콘웨이의 생명 게임 __3.1 콘웨이의 생명 게임: 싱글 스레드 버전 __3.2 콘웨이의 생명 게임: 멀티스레드 버전 4 Atomics와 Events 객체 CHAPTER 6 멀티스레드 패턴 1 스레드 풀 __1.1 풀 크기 __1.2 작업 배정 전략 __1.3 예시 적용하기 2 뮤텍스: 록 기초 3 링 버퍼를 통한 데이터 스트리밍 4 액터 모델 __4.1 패턴 뉘앙스 __4.2 자바스크립트와의 관계 __4.3 예시 구현하기 CHAPTER 7 웹어셈블리 1 여러분의 첫 번째 웹어셈블리 2 웹어셈블리의 데이터 원자성 함수 3 Emscripten을 통해 C 코드 웹어셈블리로 컴파일하기 4 웹어셈블리 컴파일러: 기타 5 AssemblyScript 6 Happycoin: AssemblyScript로 구현하기 CHAPTER 8 분석 1 멀티스레딩을 적용하지 않아야 하는 경우 __1.1 메모리 크기가 작을 때 __1.2 코어 개수가 적을 때 __1.3 컨테이너 vs 스레드 2 멀티스레딩을 적용해야 하는 경우 3 주의사항 요약 부록: 구조화된 복제 알고리즘 |
|
이 책의 목표는 자바스크립트 멀티스레딩을 구현하기 위한 실무 지식을 제공하는 것입니다. 그간 자바스크립트 프로그램은 싱글 코어에 국한하여 개발되었고, 실제로 트위터나 개발자 포럼에서도 자바스크립트는 싱글 스레드 프로그램으로만 개발할 수 있다고 말하는 글이 많습니다. 이 책의 제목이 멀티스레드 기반 자바스크립트(Multithreaded JavaScript)인 것처럼, 자바스크립트 프로그램은 무조건 싱글 스레드로 개발해야 한다는 오해를 타파하고자 합니다.
그리고 세부 목표는 여러분께 자바스크립트 멀티스레딩을 구현할 때 고려해야 할 요소를 설명하는 것입니다. 이 책을 다 읽을 때쯤에는 브라우저 웹 워커 API의 사용법, 강/약점, 언제 어떤 API를 사용해야 할지를 이해하게 될 겁니다. 또한 Node.js의 워커 스레드 모듈 API는 브라우저 웹 워커와 어떠한 차이가 있는지 알게 될 겁니다. - 멀티스레딩을 통해 성능을 향상하는 법 - 전용 워커, 공유 워커, 서비스 워커의 차이점 - 애플리케이션에서 스레드를 사용해야 할 때, 사용하지 않아야 할 때 - Atomics 객체를 활용한 스레드 통신 적용 - 애플리케이션 성능 향상을 위한 예시 코드 구현 - 멀티스레딩 성능에 대한 벤치마크 |