--- title: Atomics.wait() slug: Web/JavaScript/Reference/Global_Objects/Atomics/wait tags: - Atomics - JavaScript - Method - Shared Memory - メソッド - 共有メモリ translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/wait ---
Atomics
.wait()
は静的なメソッドで、 {{jsxref("Int32Array")}} 中の指定された位置に指定された値が保存されているかどうかを検証し、検証できるまでスリープ、もしくはタイムアウトします。返値は "ok
", "not-equal
", "timed-out
" のいずれかです。
注: この操作は共有された {{jsxref("Int32Array")}} に対してのみ可能で、またメインスレッドでは実行できません。
Atomics.wait(typedArray, index, value[, timeout])
typedArray
index
typedArray
の中の位置。value
timeout
{{optional_inline}}{{jsxref("String")}} で、 "ok
", "not-equal
", or "timed-out
" のいずれか。
typedArray
が共有された {{jsxref("Int32Array")}} でない場合、 {{jsxref("TypeError")}} が発生します。index
が typedArray
の範囲を超えている場合は {{jsxref("RangeError")}} が発生します。次のような共有 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);
仕様書 |
---|
{{SpecName('ESDraft', '#sec-atomics.wait', 'Atomics.wait')}} |
{{Compat("javascript.builtins.Atomics.wait")}}