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

byteLength アクセサープロパティは 、{{jsxref("SharedArrayBuffer")}} の長さをバイト単位で表します。

+ +
{{EmbedInteractiveExample("pages/js/sharedarraybuffer-bytelength.html","shorter")}}
+ + + +

解説

+ +

byteLength プロパティは、セットアクセサー関数が undefined であるアクセサープロパティです。つまり、このプロパティは読み取り専用です。値は共有配列が生成されたときに決定され、変更できません。

+ +

+ +

byteLength の使用

+ +
var sab = new SharedArrayBuffer(1024);
+sab.byteLength; // 1024
+
+ +

仕様書

+ + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-get-sharedarraybuffer.prototype.bytelength', 'SharedArrayBuffer.prototype.byteLength')}}
+ +

ブラウザーの互換性

+ + + +

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

+ +

関連情報

+ + 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")}}

+ +

関連項目

+ + diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html new file mode 100644 index 0000000000..05237e368a --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/sharedarraybuffer/index.html @@ -0,0 +1,77 @@ +--- +title: SharedArrayBuffer() コンストラクター +slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer +tags: + - Constructor + - JavaScript + - Reference + - SharedArrayBuffer +translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer +--- +
{{JSRef}}
+ +
+

Spectre の対策として、 SharedArrayBuffer は2018年1月5日にすべての主要ブラウザーで既定で無効化されたことに注意してください。 Chrome は、 Spectre スタイルの脆弱性から保護するためにサイトアイソレーション機能が有効になっているプラットフォームでは、 v67 で再有効化しました

+
+ +

SharedArrayBuffer() コンストラクターは {{jsxref("SharedArrayBuffer")}} オブジェクトを生成し、これは {{jsxref("ArrayBuffer")}} オブジェクトと似た、汎用的な、固定長の生のバイナリデータバッファーを表します。

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

構文

+ +
new SharedArrayBuffer([length])
+ +

引数

+ +
+
length
+
生成する配列バッファーの長さをバイト数で指定します。
+
+ +

返値

+ +

指定された長さの新しい SharedArrayBuffer オブジェクトです。中身は 0 で初期化されます。

+ +

+ +

SharedArrayBuffer を生成するには常に new 演算子を使用する

+ +

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

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

仕様書

+ + + + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-sharedarraybuffer-constructor', 'SharedArrayBuffer constructor')}}
+ +

ブラウザーの互換性

+ + + +

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

+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html new file mode 100644 index 0000000000..e283d7605a --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.html @@ -0,0 +1,80 @@ +--- +title: SharedArrayBuffer.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice +tags: + - JavaScript + - Method + - Prototype + - Shared Memory + - SharedArrayBuffer + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice +--- +
{{JSRef}}
+ +

SharedArrayBuffer.prototype.slice() メソッドは、新しい {{jsxref("SharedArrayBuffer")}} を生成し、その内容にこの SharedArrayBuffer のバイトを先頭位置 (含む) から末尾位置 (含まない) までをコピーして返します。先頭または末尾が負の値であった場合は、配列の先頭からではなく、末尾からのインデックスになります。このメソッドは {{jsxref("Array.prototype.slice()")}} と同じアルゴリズムです。

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

構文

+ +
sab.slice()
+sab.slice(begin)
+sab.slice(begin, end)
+ +

引数

+ +
+
begin {{optional_inline}}
+
取り出す先頭位置を表す 0 から始まるインデックスです。
+
負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。 slice(-2) は並びの最後の2つの要素を取り出します。
+
If begin が undefined であった場合は、 slice はインデックス 0 から取り出し始めます。
+
end {{optional_inline}}
+
0 から始まるインデックスで、取り出す範囲の末尾のを示します。 slice はここまでを取り出しますが、 end は含めません。
+
例えば、 slice(1,4) は2番目から4番目までの要素を取り出します (添字が 1, 2, 3 の要素)。
+
負のインデックスを使用して、配列の末尾からのオフセットを示すことが可能です。 slice(2,-1) は3番目から、並びの最後から2番目までの要素を取り出します。
+
end が省略されると、 slice は並びの最後までの範囲を取り出します。 (sab.byteLength).
+
+ +

返値

+ +

取り出した要素をが入った新しい {{jsxref("SharedArrayBuffer")}} です。

+ +

+ +

slice() の使用

+ +
var sab = new SharedArrayBuffer(1024);
+sab.slice();    // SharedArrayBuffer { byteLength: 1024 }
+sab.slice(2);   // SharedArrayBuffer { byteLength: 1022 }
+sab.slice(-2);  // SharedArrayBuffer { byteLength: 2 }
+sab.slice(0, 1); // SharedArrayBuffer { byteLength: 1 }
+
+ +

仕様書

+ + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-sharedarraybuffer.prototype.slice', 'SharedArrayBuffer.prototype.slice')}}
+ +

ブラウザーの互換性

+ + + +

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

+ +

関連情報

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