From d7976e817699e7c44caacbb00c78c9c0bcadaf4c Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Tue, 23 Mar 2021 11:57:32 +0900 Subject: Web/JavaScript/Reference/Global_Objects/Atomics/notify を更新 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2021/02/20時点の英語版に追従して更新 --- .../global_objects/atomics/notify/index.html | 148 +++++++-------------- 1 file changed, 50 insertions(+), 98 deletions(-) (limited to 'files/ja/web/javascript') diff --git a/files/ja/web/javascript/reference/global_objects/atomics/notify/index.html b/files/ja/web/javascript/reference/global_objects/atomics/notify/index.html index 9595b04f3d..614b5769f2 100644 --- a/files/ja/web/javascript/reference/global_objects/atomics/notify/index.html +++ b/files/ja/web/javascript/reference/global_objects/atomics/notify/index.html @@ -1,143 +1,95 @@ --- -title: Atomics.wake() +title: Atomics.notify() slug: Web/JavaScript/Reference/Global_Objects/Atomics/notify +tags: +- Atomics +- JavaScript +- Method +- Shared Memory translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/notify original_slug: Web/JavaScript/Reference/Global_Objects/Atomics/wake --- -
{{JSRef}} {{SeeCompatTable}}
+
{{JSRef}}
-

静的メソッドである Atomics.wake() は待ち行列中のいくつかのエージェントを起こします。

+

静的メソッドである Atomics.notify() は、待ち行列で休眠状態にあるいくつかのエージェントに通知します。

-

付記:この操作は共有された {{jsxref("Int32Array")}} に対してのみ許可されています。

+

注: この操作は共有された {{jsxref("Int32Array")}} に対してのみ許可されています。
+共有されていない ArrayBuffer オブジェクトでは 0 を返します。

-

構文

+

構文

-
Atomics.wake(typedArray, index, count)
+
Atomics.notify(typedArray, index, count)
 
-

引数

+

引数

-
typedArray
-
共有された {{jsxref("Int32Array")}}。
-
index
-
起こす対象となる typedArray 中の位置。
-
count
-
起こすエージェントの数。既定値は {{jsxref("Infinity", "+Infinity")}} である。
+
typedArray
+
共有された {{jsxref("Int32Array")}}。
+
index
+
起動する対象となる typedArray 中の位置。
+
count
+
起動するエージェントの数。既定値は {{jsxref("Infinity", "+Infinity")}} です。
-

返り値

+

返値

-

起きたエージェントの数。

+ -

例外

+

例外

-

+

+ +

notify の使用

共有された Int32Array を用意します:

-
var sab = new SharedArrayBuffer(1024);
-var int32 = new Int32Array(sab);
+
const sab = new SharedArrayBuffer(1024);
+const int32 = new Int32Array(sab);
 
-

読み手のスレッドは、0 番目の値が 0 であることを期待してスリープします。それが満たされている間、この場合は 0 番目の値が 0 である間は処理が進みません。しかし書き手のスレッドが新しい値 (この場合は 123)をストアした場合、読み手のスレッドは読み手のスレッドによって起こされ、新しい値 (123)を取得します。

+

読み手のスレッドは、0 番目の値が 0 であることを期待してスリープします。それが満たされている間は処理が進みません。しかし、書き手のスレッドが新しい値をストアした場合、読み手のスレッドは読み手のスレッドによって起こされ、新しい値 (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);
+Atomics.notify(int32, 0, 1);
-

仕様

+

仕様書

- - - - - - - - - - - - -
仕様状態コメント
{{SpecName('Shared Memory', '#Atomics.wake', 'Atomics.wake')}}{{Spec2('Shared Memory')}}初期定義
- -

ブラウザ互換性

- -

{{CompatibilityTable}}

- -
- - - - - - - - - - - - - - - - - - - - - + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("46")}} [1] [3]{{CompatNo}}{{CompatNo}}{{CompatNo}}
仕様書
{{SpecName('ESDraft', '#sec-atomics.notify', 'Atomics.notify')}}
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("46")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
-
- -

[1] 設定で無効になっています。about:config で javascript.options.shared_memorytrue に設定することで利用できます。

-

[2] 現在実装中で、利用には次のオプションをつけて起動する必要があります:--js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+

ブラウザーの互換性

-

[3] バージョン 46 と 47 では Atomics.futexWake() という名前で利用できます。また引数 count の既定値は 0 となっています。列の代わりに Atomics.OK、Atomics.TIMEDOUT、Atomics.NOTEQUAL を返します

+

{{Compat("javascript.builtins.Atomics.notify")}}

-

関連情報

+

関連情報

-- cgit v1.2.3-54-g00ecf