Atomics
.wait()
は静的なメソッドで、 Int32Array
中の指定された位置に指定された値が保存されているかどうかを検証し、検証できるまでスリープ、もしくはタイムアウトします。返値は "ok
", "not-equal
", "timed-out
" のいずれかです。
注: この操作は共有された Int32Array
に対してのみ可能で、またメインスレッドでは実行できません。
構文
Atomics.wait(typedArray, index, value[, timeout])
引数
typedArray
- 共有された
Int32Array
。 index
- 待つ対象となる
typedArray
の中の位置。 value
- 期待される値。
timeout
Optional- ミリ秒で表した待ち時間。時間が指定されなかった場合は
Infinity
。
返値
String
で、 "ok
", "not-equal
", or "timed-out
" のいずれか。
例外
typedArray
が共有されたInt32Array
でない場合、TypeError
が発生します。index
がtypedArray
の範囲を超えている場合はRangeError
が発生します。
例
wait() の使用
次のような共有 Int32Array
があったとします。
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
読み手のスレッドはスリープし、 0 番目の値が 0 であることを期待して待ちます。これが成立している間、処理は進みません。しかし、書き手のスレッドが新しい値を格納した場合、書き手のスレッドによって通知され、新しい値 (123) が返ります。
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);
仕様書
ブラウザーの互換性
BCD tables only load in the browser
このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 https://github.com/mdn/browser-compat-data をチェックアウトしてプルリクエストを送信してください。