--- title: Atomics.wake() slug: Web/JavaScript/Reference/Global_Objects/Atomics/notify translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/notify original_slug: Web/JavaScript/Reference/Global_Objects/Atomics/wake ---
静的メソッドである Atomics
.wake()
は待ち行列中のいくつかのエージェントを起こします。
付記:この操作は共有された {{jsxref("Int32Array")}} に対してのみ許可されています。
Atomics.wake(typedArray, index, count)
typedArray
index
typedArray
中の位置。count
起きたエージェントの数。
typedArray
が共有されている {{jsxref("Int32Array")}} でない場合、{{jsxref("TypeError")}} が送出される。index
が typedArray
の範囲を超えている場合 {{jsxref("RangeError")}} が送出される。共有された Int32Array
を用意します:
var sab = new SharedArrayBuffer(1024); var int32 = new Int32Array(sab);
読み手のスレッドは、0 番目の値が 0 であることを期待してスリープします。それが満たされている間、この場合は 0 番目の値が 0 である間は処理が進みません。しかし書き手のスレッドが新しい値 (この場合は 123)をストアした場合、読み手のスレッドは読み手のスレッドによって起こされ、新しい値 (123)を取得します。
Atomics.wait(int32, 0, 0); console.log(int32[0]); // 123
書き手のスレッドは新しい値をストアし、待っているスレッドを起こします:
console.log(int32[0]); // 0; Atomics.store(int32, 0, 123); Atomics.wake(int32, 0, 1);
仕様 | 状態 | コメント |
---|---|---|
{{SpecName('Shared Memory', '#Atomics.wake', 'Atomics.wake')}} | {{Spec2('Shared Memory')}} | 初期定義 |
{{CompatibilityTable}}
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | {{CompatNo}} [2] | {{CompatNo}} | {{CompatGeckoDesktop("46")}} [1] [3] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile("46")}} [1] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] 設定で無効になっています。about:config で javascript.options.shared_memory
を true
に設定することで利用できます。
[2] 現在実装中で、利用には次のオプションをつけて起動する必要があります:--js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer
[3] バージョン 46 と 47 では Atomics.futexWake()
という名前で利用できます。また引数 count
の既定値は 0 となっています。列の代わりに Atomics.OK、
Atomics.TIMEDOUT、
Atomics.NOTEQUAL
を返します