Multithreaded JavaScript: Concurrency Beyond the Event Loop
- Length: 200 pages
- Edition: 1
- Language: English
- Publisher: O'Reilly Media
- Publication Date: 2021-11-16
- ISBN-10: 1098104439
- ISBN-13: 9781098104436
- Sales Rank: #1697208 (See Top 100 Books)
The nature of JavaScript is to be single threaded. This is reflected not only in libraries and applications, but also in online forum posts, books, and online documentation. Thanks to recent advancements in the platform—such as with web workers in the browser, worker_threads in Node.js, and the Atomics and SharedArrayBuffer objects—JavaScript engineers are able to build multi-threaded applications. 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, using a spectrum of API reference material and high level programming patterns.
- Learn what multithreaded programming is and how you can benefit from it
- Understand the differences between a dedicated worker, a shared worker, and a service worker
- Identify when and when not to use threads in an application
- Orchestrate communication between threads by leveraging the Atomics object
- Understand both the gains and pitfalls of using shared memory
- Benchmark performance to learn when you’ll benefit from multiple threads
Foreword 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
Donate to keep this site alive
How to download source code?
1. Go to: https://www.oreilly.com/
2. Search the book title: Multithreaded JavaScript: Concurrency Beyond the Event Loop
, sometime you may not get the results, please search the main title
3. Click the book title in the search results
3. Publisher resources
section, click Download Example Code
.
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.