

Thomas Hunter II previously worked as a Developer Advocate and API Architect for Barracuda Networks’ Copy.
Meer over de auteursMultithreaded JavaScript
Concurrency Beyond the Event Loop
Paperback Engels 2021 9781098104436Samenvatting
Traditionally, JavaScript has been a single-threaded language. Nearly all online forum posts, books, online documentation, and libraries refer to the language as single threaded. Thanks to recent advancements in the language-such as the Atomics and SharedArrayBuffers objects and Web Workers in the browser-JavaScript is now a multi-threaded language. These features will go down as being the biggest paradigm shift for the world's most popular programming language.
Multithreaded JavaScript explores the various features that JavaScript runtimes have at their disposal for implementing multithreaded programming, providing both practical real-world examples, as well as reference material.
- Learn what multithreaded programming is and how you can benefit from it
- Understand the differences between a web worker, a service worker, and a worker thread
- Know when and when not to use threads in an application
- Orchestrate communication between threads by leveraging the Atomics object
- Build high-performance applications using the knowledge you gain from this book
- Benchmark performance to learn if you'll benefit from multithreading
Specificaties
Lezersrecensies
Geef uw waardering
Inhoudsopgave
Preface
Target Audience
Goals
Conventions Used in This Book
Using Code Examples
O’Reilly Online Learning
How to Contact Us
Acknowledgments
1. Introduction
What Are Threads?
Concurrency Versus Parallelism
Single-Threaded JavaScript
Hidden Threads
Threads in C: Get Rich with Happycoin
With Only the Main Thread
With Four Worker Threads
2. Browsers
Dedicated Workers
Dedicated Worker Hello World
Advanced Dedicated Worker Usage
Shared Workers
Shared Worker Hello World
Advanced Shared Worker Usage
Service Workers
Service Worker Hello World
Advanced Service Worker Concepts
Message Passing Abstractions
The RPC Pattern
The Command Dispatcher Pattern
Putting It All Together
3. Node.js
Before We Had Threads
The worker_threads Module
workerData
MessagePort
Happycoin: Revisited
With Only the Main Thread
With Four Worker Threads
Worker Pools with Piscina
A Pool Full of Happycoins
4. Shared Memory
Intro to Shared Memory
Shared Memory in the Browser
Shared Memory in Node.js
SharedArrayBuffer and TypedArrays
Atomic Methods for Data Manipulation
Atomics.add()
Atomics.and()
Atomics.compareExchange()
Atomics.exchange()
Atomics.isLockFree()
Atomics.load()
Atomics.or()
Atomics.store()
Atomics.sub()
Atomics.xor()
Atomicity Concerns
Data Serialization
Booleans
Strings
Objects
5. Advanced Shared Memory
Atomic Methods for Coordination
Atomics.wait()
Atomics.notify()
Atomics.waitAsync()
Timing and Nondeterminism
Example of Nondeterminism
Detecting Thread Preparedness
Example Application: Conway’s Game of Life
Single-Threaded Game of Life
Multithreaded Game of Life
Atomics and Events
6. Multithreaded Patterns
Thread Pool
Pool Size
Dispatch Strategies
Example Implementation
Mutex: A Basic Lock
Streaming Data with Ring Buffers
Actor Model
Pattern Nuances
Relating to JavaScript
Example Implementation
7. WebAssembly
Your First WebAssembly
Atomic Operations in WebAssembly
Compiling C Programs to WebAssembly with Emscripten
Other WebAssembly Compilers
AssemblyScript
Happycoin in AssemblyScript
8. Analysis
When Not to Use
Low Memory Constraints
Low Core Count
Containers Versus Threads
When to Use
Summary of Caveats
A. Structured Clone Algorithm
Index
Rubrieken
- Advisering
- Algemeen management
- Coaching en trainen
- Communicatie en media
- Economie
- Financieel management
- Inkoop en logistiek
- Internet en social media
- IT-management / ICT
- Juridisch
- Leiderschap
- Marketing
- Mens en maatschappij
- Non-profit
- Ondernemen
- Organisatiekunde
- Personal finance
- Personeelsmanagement
- Persoonlijke effectiviteit
- Projectmanagement
- Psychologie
- Reclame en verkoop
- Strategisch management
- Verandermanagement
- Werk en loopbaan