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...

Full description

Bibliographic Details
Main Authors: Hunter, Thomas, English, Bryan (Author)
Format: eBook
Language:English
Published: O'Reilly Media, Inc. 2021
Edition:1st edition
Online Access:
Collection: O'Reilly - Collection details see MPG.ReNa
Table of Contents:
  • 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
  • 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
  • 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
  • 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
  • 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