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.

Syntax

Atomics.notify(typedArray, index, count)

Parameters

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

Return value

A number of woken up agents.

Exceptions

Examples

Given a shared Int32Array:

var sab = new SharedArrayBuffer(1024);
var 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 Status Comment
ECMAScript Latest Draft (ECMA-262)
The definition of 'Atomics.notify' in that specification.
Draft Initial definition in ES2017.

Browser compatibility

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome 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 16
Notes Alternate Name
Full support 16
Notes Alternate Name
Notes Support was removed to mitigate speculative execution side-channel attacks (Windows blog).
Alternate Name Uses the non-standard name: wake
Firefox 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.
IE No support NoOpera No support NoSafari No support 10.1 — ?
Alternate Name
No support 10.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
Edge Mobile ? 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 NoSamsung Internet Android No support Nonodejs 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
Compatibility unknown  
Compatibility unknown
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

Document Tags and Contributors

Contributors to this page: fscholz, btzy
Last updated by: fscholz,