Multithreaded JavaScript /
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...
Autores principales: | , |
---|---|
Autor Corporativo: | |
Formato: | Electrónico eBook |
Idioma: | Inglés |
Publicado: |
O'Reilly Media, Inc.,
2021.
|
Edición: | 1st edition. |
Acceso en línea: | Texto completo (Requiere registro previo con correo institucional) |
Tabla de Contenidos:
- Cover
- Copyright
- Table of Contents
- Foreword
- Preface
- Target Audience
- Goals
- Conventions Used in This Book
- Using Code Examples
- O'Reilly Online Learning
- How to Contact Us
- Acknowledgments
- Chapter 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
- Chapter 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
- Chapter 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
- Chapter 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
- Chapter 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
- Chapter 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
- Chapter 7. WebAssembly
- Your First WebAssembly
- Atomic Operations in WebAssembly
- Compiling C Programs to WebAssembly with Emscripten
- Other WebAssembly Compilers
- AssemblyScript
- Happycoin in AssemblyScript
- Chapter 8. Analysis
- When Not to Use
- Low Memory Constraints
- Low Core Count
- Containers Versus Threads
- When to Use
- Summary of Caveats
- Appendix A. Structured Clone Algorithm
- Index
- About the Authors
- Colophon