Многопоточный JavaScript

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Цель данной книги – научить читателя нескольким аспектам написания многопоточных JavaScript-приложений. Прочитав книгу до конца, вы будете понимать различные API веб-исполнителей в браузерах, их сильные и слабые стороны и когда какой использовать. Также узнаете о модуле рабочих потоков в Node.js и сможете сравнить его API с тем, что имеется в браузере. Издание предназначено в первую очередь разработчикам, уже знакомым с JavaScript, но мало знакомым с многопоточным программированием.

Author(s): Томас Хантер II, Брайан Инглиш
Edition: 1
Publisher: ДМК Пресс
Year: 2022

Language: English
Commentary: Vector PDF
Pages: 188
City: М.
Tags: Multithreading; JavaScript; Concurrency; Memory Management; Node.js; WebAssembly

От издательства
Вступительное слово
Предисловие
Об авторах
Об иллюстрации на обложке
Глава 1. Введение
Что такое потоки?
Конкурентность и параллелизм
Однопоточный Java­Script
Скрытые потоки
Потоки на C: обогатитесь с помощью криптовалюты Happycoin
С одним главным потоком
С четырьмя рабочими потоками
Глава 2. Браузеры
Выделенные исполнители
Выделенный исполнитель Hello World
Продвинутое использование выделенного исполнителя
Разделяемые исполнители
Разделяемый исполнитель Hello World
Продвинутое использование разделяемого исполнителя
Сервисные исполнители
Сервисный исполнитель Hello World
Продвинутые возможности сервисных исполнителей
Абстракции передачи сообщений
Паттерн RPC
Паттерн Диспетчер команд
Соберем все вместе
Глава 3. Node.js
Что было до потоков
Модуль worker_threads
workerData
MessagePort
И снова Happycoin
С одним главным потоком
С четырьмя потоками
Piscina – организация пула рабочих потоков
Полный пул Happycoin’ов
Глава 4. Разделяемая память
Введение в разделяемую память
Разделяемая память в браузере
Разделяемая память в Node.js
SharedArrayBuffer и типизированные массивы
Атомарные методы манипулирования данными
Atomics.add()
Atomics.and()
Atomics.compareExchange()
Atomics.exchange()
Atomics.isLockFree()
Atomics.load()
Atomics.or()
Atomics.store()
Atomics.sub()
Atomics.xor()
Несколько замечаний об атомарности
Сериализация данных
Булевы значения
Строки
Объекты
Глава 5. Дополнительные способы работы с разделяемой памятью
Атомарные методы координации
Atomics.wait()
Atomics.notify()
Atomics.waitAsync()
Хронометраж и недетерминированность
Пример недетерминированности
Определение готовности потока
Пример приложения: игра «Жизнь» Конвея
Однопоточная игра «Жизнь»
Многопоточная игра «Жизнь»
Атомарные операции и события
Глава 6. Паттерны многопоточного программирования
Пул потоков
Размер пула
Стратегии диспетчеризации
Пример реализации
Мьютекс: простая блокировка
Потоковая обработка данных с помощью кольцевых буферов
Модель акторов
Нюансы паттерна
Акторы в Java­Script
Пример реализации
Глава 7. WebAssembly
Ваша первая WebAssembly
Атомарные операции в WebAssembly
Компиляция с C на WebAssembly с помощью Emscripten
Другие компиляторы на WebAssembly
AssemblyScript
Happycoin на AssemblyScript
Глава 8. Анализ
Когда не стоит использовать потоки
Ограничения на объем памяти
Недостаточное число ядер
Контейнеры и потоки
Когда стоит использовать потоки
Подводные камни
Приложение. Алгоритм структурированного клонирования
Предметный указатель