Given a shared Int32Array
:
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
A reading thread is sleeping and waiting on location 0 because the provided value
matches what is stored at the provided index
. The reading thread will not move on until the writing thread has called Atomics.notify()
on position 0 of the provided typedArray
. Note that if, after being woken up, the value of location 0 has not been changed by the writing thread, the reading thread will not go back to sleep, but will continue on.
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);