Atomics.wake()

This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.

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

Note: This operation works with a shared Int32Array only.

Syntax

Atomics.wake(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 wake. 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 woken up 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 wakes up the waiting thread once it has written:

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

Specifications

Specification Status Comment
ECMAScript Shared Memory and Atomics
The definition of 'Atomics.wake' in that specification.
Draft Initial definition.

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support No support [2] No support 46 (46) [1] [3] No support No support No support
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support No support No support 46.0 (46) [1] No support No support No support

[1] This feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

[3] In versions 46 and 47, this method was named Atomics.futexWake() and the count parameter defaulted to 0.

See also

Document Tags and Contributors

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