The Atomics.wait()
static method verifies that a shared memory location still contains a given value and if so sleeps, awaiting a wake-up notification or times out. It returns a string which is either "ok"
, "not-equal"
, or "timed-out"
.
Syntax
Atomics.wait(typedArray, index, value)
Atomics.wait(typedArray, index, value, timeout)
Return value
A string which is either "ok"
, "not-equal"
, or "timed-out"
.
Exceptions
-
TypeError
-
Thrown in one of the following cases:
-
RangeError
-
Thrown if index
is out of bounds in the typedArray
.
Using wait()
Given a shared Int32Array
:
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
A reading thread is sleeping and waiting on location 0 which is expected to be 0. As long as that is true, it will not go on. However, once the writing thread has stored a new value, it will be notified by the writing thread and return the new value (123).
Atomics.wait(int32, 0, 0);
console.log(int32[0]);
A writing thread stores a new value and notifies the waiting thread once it has written:
console.log(int32[0]);
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
Specifications
Browser compatibility
|
Desktop |
Mobile |
Server |
|
Chrome |
Edge |
Firefox |
Opera |
Safari |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
WebView Android |
Deno |
Node.js |
wait |
68 |
79 |
78 |
55 |
15.2 |
89 |
79 |
63 |
15.2 |
15.0 |
89 |
1.0 |
8.10.0 |