From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/sharedarraybuffer/index.html | 135 +++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html (limited to 'files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html') diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html new file mode 100644 index 0000000000..2603ebfbd1 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/index.html @@ -0,0 +1,135 @@ +--- +title: SharedArrayBuffer +slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +tags: + - Constructor + - JavaScript + - Shared Memory + - SharedArrayBuffer + - TypesdArrays +translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +--- +
{{JSRef}}
+ +

SharedArrayBuffer オブジェクトは、ジェネリックで固定長の生バイナリデータバッファーを表すために使用されます。{{jsxref("ArrayBuffer")}} オブジェクトと似ていますが、これらは共有メモリー上にビューを生成するために使用されます。ArrayBuffer と異なり、SharedArrayBuffer は分離できません。

+ +
+

SharedArrayBuffer はすべての主要なブラウザーで 2018 年 1 月 5 日に、Spectre への対応として無効化されましたので注意してください。Chrome では、Spectre 型脆弱性から保護するためのサイト分離機能が有効にされたプラットフォームにおいて、v67 に再度有効化されています

+
+ +
{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html")}}
+ + + +

構文

+ +
new SharedArrayBuffer(length)
+
+ +

パラメーター

+ +
+
length
+
array buffer を生成するバイト単位のサイズ。
+
+ +

戻り値

+ +

指定したサイズの新しい SharedArrayBuffer。コンテンツは 0 に初期化されている。

+ +

説明

+ +

メモリーの割り当てと共有

+ +

クラスター内のあるエージェントから別のエージェント (エージェントとは、ウェブページのメインプログラムまたはその web worker のひとつ) へ、{{jsxref("SharedArrayBuffer")}} オブジェクトを使用してメモリーを共有するために、postMessagestructured cloning を使用します。

+ +

structured clone アルゴリズムは SharedArrayBuffers と、SharedArrayBuffers にマッピングされた TypedArrays を受け入れます。どちらの場合も SharedArrayBuffer オブジェクトは受信者に転送されて、受信側のエージェントで新たなプライベートの SharedArrayBuffer オブジェクトになります ({{jsxref("ArrayBuffer")}} と同じように)。しかし、2 つの SharedArrayBuffer オブジェクトから参照される共有データブロックは同一のデータブロックであり、あるエージェントによるブロックへの副作用は、結果的に他方のエージェントからも見えます。

+ +
var sab = new SharedArrayBuffer(1024);
+worker.postMessage(sab);
+
+ +

Atomic 操作で共有メモリを更新、同期する

+ +

共有メモリーは、worker 内でもメインスレッド内でも同時に生成や更新ができます。システム(CPU や OS、ブラウザー)によっては、変更がすべてのコンテキストに通知されるまでに少々時間がかかります。同期するためには、{{jsxref("Atomics", "atomic", "", 1)}} 操作が必要です。

+ +

SharedArrayBuffer オブジェクトを受け付ける API

+ + + +

SharedArrayBuffer の生成には new 演算子が必要

+ +

SharedArrayBuffer コンストラクターは、{{jsxref("Operators/new", "new")}} 演算子で呼び出される必要があります。new 演算子なしで関数として SharedArrayBuffer コンストラクターを呼び出すと、{{jsxref("TypeError")}} をスローします。

+ +
var sab = SharedArrayBuffer(1024);
+// TypeError: calling a builtin SharedArrayBuffer constructor
+// without new is forbidden
+ +
var sab = new SharedArrayBuffer(1024);
+ +

プロパティ

+ +
+
SharedArrayBuffer.length
+
SharedArrayBuffer コンストラクターの length プロパティの値は 1。
+
{{jsxref("SharedArrayBuffer.prototype")}}
+
すべての SharedArrayBuffer オブジェクトにプロパティ追加を許可する。
+
+ +

SharedArrayBuffer プロトタイプオブジェクト

+ +

すべての SharedArrayBuffer インスタンスは {{jsxref("SharedArrayBuffer.prototype")}} を継承しています。

+ +

プロパティ

+ +

{{page('ja/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','プロパティ')}}

+ +

メソッド

+ +

{{page('ja/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','メソッド')}}

+ +

仕様

+ + + + + + + + + + + + + + + + + + + +
仕様状態コメント
{{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}{{Spec2('ESDraft')}}ES2017 で初期定義。
{{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}{{Spec2('ES8')}}
+ +

ブラウザー実装状況

+ + + +

{{Compat("javascript.builtins.SharedArrayBuffer")}}

+ +

関連項目

+ + -- cgit v1.2.3-54-g00ecf