16Shared Memory

In this chapter, you'll learn about JavaScript's shared memory feature (in ES2017+), allowing memory to be shared between threads, and the Atomics object you can use to perform low-level shared memory operations and to suspend and resume threads based on events in shared memory.

INTRODUCTION

For most of the decade or so that JavaScript on browsers hasn't been single-threaded (thanks to web workers), there was no way to share memory across threads in the browser. Initially, threads could post messages to each other with data in them, but the data was copied. When it's a lot of data, or it has to be sent back and forth a lot, that's a problem. A few years later when typed arrays (Chapter 11) were defined, originally outside JavaScript and then added to ES2015, in many cases it became possible to transfer data from one thread to another without copying it, but the sending thread had to give up access to the data being sent.

ES2017 changed that with SharedArrayBuffer. With a SharedArrayBuffer, JavaScript code running in one thread can share memory with JavaScript code running on another thread.

Before getting into how shared memory works in JavaScript, let's explore the question of whether you really ...

Get JavaScript now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.