UNB/ CS/ David Bremner/ teaching/ cs2613/ books/ mdn/ Reference/ Global Objects/ Atomics/ Atomics.waitAsync()

The Atomics.waitAsync() static method waits asynchronously on a shared memory location and returns a Promise.

Unlike Atomics.wait, waitAsync is non-blocking and usable on the main thread.

Note: This operation only works with an Int32Array or BigInt64Array that views a SharedArrayBuffer.

Syntax

Atomics.waitAsync(typedArray, index, value)
Atomics.waitAsync(typedArray, index, value, timeout)

Parameters

Return value

An Object with the following properties:

Exceptions

Examples

Using waitAsync()

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. The result.value will be a promise.

const result = Atomics.waitAsync(int32, 0, 0, 1000);
// { async: true, value: Promise {<pending>} }

In the reading thread or in another thread, the memory location 0 is called and the promise can be resolved with "ok".

Atomics.notify(int32, 0);
// { async: true, value: Promise {<fulfilled>: 'ok'} }

If it isn't resolving to "ok", the value in the shared memory location wasn't the expected (the value would be "not-equal" instead of a promise) or the timeout was reached (the promise will resolve to "time-out").

Specifications

Browser compatibility

See also