Atomics.notify()

The static Atomics.notify() method notifies up some agents that are sleeping in the wait queue.

Note: This operation works with a shared Int32Array only.
It will return 0 on non-shared ArrayBuffer objects.

Syntax

Atomics.notify(typedArray, index, count)

Parameters

typedArray
A shared Int32Array.
index
The position in the typedArray to wake up on.
count Optional
The number of sleeping agents to notify. Defaults to +Infinity.

Return value

  • Returns the number of woken up agents.
  • Returns 0, if a non-shared ArrayBuffer object is used.

Exceptions

Examples

Using notify

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]); // 123

A writing thread stores a new value and notifies the waiting thread once it has written:

console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);

Specifications

Specification
ECMAScript (ECMA-262)
The definition of 'Atomics.notify' in that specification.

Browser compatibility

DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
notifyChrome Full support 68
Full support 68
No support 60 — 63
Notes Alternate Name
Notes Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This was a temporary removal while mitigations were put in place.
Alternate Name Uses the non-standard name: wake
Edge Full support 79Firefox Full support 78
Full support 78
Full support 63
Notes Disabled
Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Disabled From version 63: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Full support 57
Notes Alternate Name Disabled
Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Alternate Name Uses the non-standard name: wake
Disabled From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
No support 55 — 57
No support 48 — 55
Disabled
Disabled From version 48 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
No support 46 — 48
Notes Alternate Name Disabled
Notes The count parameter defaults to 0 instead of the later-specified +Infinity.
Alternate Name Uses the non-standard name: futexWake
Disabled From version 46 until version 48 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE No support NoOpera No support NoSafari No support 10.1 — 11.1
Alternate Name
No support 10.1 — 11.1
Alternate Name
Alternate Name Uses the non-standard name: wake
WebView Android No support 60 — 63
Notes Alternate Name
No support 60 — 63
Notes Alternate Name
Notes Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.
Alternate Name Uses the non-standard name: wake
Chrome Android No support 60 — 63
Notes Alternate Name
No support 60 — 63
Notes Alternate Name
Notes Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.
Alternate Name Uses the non-standard name: wake
Firefox Android Full support 63
Notes Disabled
Full support 63
Notes Disabled
Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Disabled From version 63: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Full support 57
Notes Alternate Name Disabled
Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Alternate Name Uses the non-standard name: wake
Disabled From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
No support 55 — 57
No support 48 — 55
Disabled
Disabled From version 48 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
No support 46 — 48
Notes Alternate Name Disabled
Notes The count parameter defaults to 0 instead of the later-specified +Infinity.
Alternate Name Uses the non-standard name: futexWake
Disabled From version 46 until version 48 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android No support NoSafari iOS No support 10.3 — 11.3Samsung Internet Android No support No
Notes Alternate Name
No support No
Notes Alternate Name
Notes Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.
Alternate Name Uses the non-standard name: wake
nodejs Full support 8.10.0
Alternate Name
Full support 8.10.0
Alternate Name
Alternate Name Uses the non-standard name: wake

Legend

Full support
Full support
No support
No support
See implementation notes.
See implementation notes.
User must explicitly enable this feature.
User must explicitly enable this feature.
Uses a non-standard name.
Uses a non-standard name.

See also