Atomics.notify()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.
Atomics.notify()
は静的メソッドで、待ち行列で休眠状態にあるエージェントに通知します。
メモ:
この操作は SharedArrayBuffer
のビューである Int32Array
または BigInt64Array
に対してのみ動作します。
共有されていない ArrayBuffer
オブジェクトでは 0
を返します。
構文
Atomics.notify(typedArray, index, count)
引数
typedArray
-
SharedArrayBuffer
のビューであるInt32Array
またはBigInt64Array
。 index
-
起動する対象となる
typedArray
中の位置。 count
省略可-
通知する休眠状態のエージェントの数。既定値は
Infinity
です。
返値
覚醒したエージェントの数を返します。この typedArray
が共有されていない ArrayBuffer
のビューである場合は 0
を返します。
例外
TypeError
-
この
typedArray
がInt32Array
またはBigInt64Array
のどちらでもない場合に発生します。 RangeError
-
index
がtypedArray
の範囲を超えている場合に発生します。
例
notify
の使用
共有された Int32Array
を用意します。
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
指定された value
が指定された index
に格納されている値と一致するため、読み取りスレッドは位置 0 で休眠状態で待機しています。
書き込みスレッドが、指定された typedArray
の位置 0 で Atomics.notify()
を呼び出すまで、読み取りスレッドは移動しません。
覚醒した後、位置 0 の値が書き込みスレッドによって変更されていない場合、読み取りスレッドは休眠状態に戻らず、処理を続行することに注意してください。
Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123
書き手のスレッドは新しい値を格納し、待機中のスレッドに通知を行います。
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
仕様書
Specification |
---|
ECMAScript® 2026 Language Specification # sec-atomics.notify |