From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/atomics/add/index.html | 126 ++++++++++++++++ .../reference/global_objects/atomics/index.html | 168 +++++++++++++++++++++ .../global_objects/atomics/sub/index.html | 128 ++++++++++++++++ 3 files changed, 422 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/atomics/add/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/atomics/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/atomics/sub/index.html (limited to 'files/ru/web/javascript/reference/global_objects/atomics') diff --git a/files/ru/web/javascript/reference/global_objects/atomics/add/index.html b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html new file mode 100644 index 0000000000..a426517362 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html @@ -0,0 +1,126 @@ +--- +title: Atomics.add() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/add +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add +--- +
{{JSRef}}
+ +

Статический метод Atomics.add() добавляет значение к текущему по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная опреация гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.

+ +

Синтаксис

+ +
Atomics.add(typedArray, index, value)
+
+ +

Параметры

+ +
+
typedArray
+
Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
+
index
+
Позиция в typedArray для добавления value.
+
value
+
Число для добавления.
+
+ +

Возвращаемое значение

+ +

Предыдущее значение в указанной позиции (typedArray[index]).

+ +

Исключения

+ + + +

Примеры

+ +
var sab = new SharedArrayBuffer(1024);
+var ta = new Uint8Array(sab);
+
+Atomics.add(ta, 0, 12); // возвращает 0, предыдущее значение
+Atomics.load(ta, 0); // 12
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-atomics.add', 'Atomics.add')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

+ +

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/atomics/index.html b/files/ru/web/javascript/reference/global_objects/atomics/index.html new file mode 100644 index 0000000000..8ac33321f2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/index.html @@ -0,0 +1,168 @@ +--- +title: Atomics +slug: Web/JavaScript/Reference/Global_Objects/Atomics +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics +--- +
{{JSRef}}
+ +
Объект Atomics предоставляет атомарные операции как статические методы. Используется вместе с объектом {{jsxref("SharedArrayBuffer")}}. 
+ +
 
+ +

Атомарные операции установлены в модуле Atomics. В отличие от других глобальных объектов, Atomics не является конструктором. Его нельзя использовать вместе с оператором new или вызывать объект Atomics как функцию. Все свойства и методы Atomics статические (как у объекта {{jsxref("Math")}}, к примеру).

+ +

Свойства

+ +
+
Atomics[Symbol.toStringTag]
+
Значение этого свойства - "Atomics".
+
+ +

Методы

+ +

Атомарные операции

+ +

Когда память разделена, несколько потоков могут читать и записывать одни и те же данные в память. Атомарные операции гарантируют, что ожидаемые значения будут записаны и прочитаны, а операции завершены, прежде чем следующая операция начнет свою работу, и они не будут прерваны.

+ +
+
{{jsxref("Atomics.add()")}}
+
Добавляет представленное значение к текущему по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.and()")}}
+
Вычисляет побитовое AND в указанной позиции массива. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.compareExchange()")}}
+
Сохраняет представленное значение в указанную позицию массива, если оно эквивалентно представленному значению. Возвращает предыдущее значение.
+
{{jsxref("Atomics.exchange()")}}
+
Сохраняет представленное значение в указанную позицию массива. Возвращает предыдущее значение.
+
+ +
+
{{jsxref("Atomics.load()")}}
+
Возвращает значение из указаной позиции массива.
+
{{jsxref("Atomics.or()")}}
+
Вычисляет побитовое OR в указанной позиции массивая. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.store()")}}
+
Сохраняет представленное значение в указанную позицию массива. Возвращает значение.
+
{{jsxref("Atomics.sub()")}}
+
Вычитает представленное значение из текущего по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.xor()")}}
+
Вычисляет побитовое XOR в указанной позиции массива. Возвращает предыдущее значение в этой позиции.
+
+ +

Wait и notify

+ +

wait() и wake() методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определенное состояние не станет true, и обычно используется как блокирующие конструкции.

+ +
+
{{jsxref("Atomics.wait()")}}
+
+

Проверяет, содержится в указанной позиции массива все еще представленное значение и спит в ожидании или тайм-аут. Возвращает "ok", "not-equal" или "timed-out". Если ожидание не разрешено в вызывающем агенете, тогда выбросит ошибку исключения (большинство браузеров не разрешают wait() в главном потоке барузера).

+
+
{{jsxref("Atomics.wake()")}}
+
Пробуждает некоторых агентов, которые спят в очереди ожидания в указанной позиции массива. Возвращает количество агентов, которые были разбужены.
+
{{jsxref("Atomics.isLockFree()", "Atomics.isLockFree(size)")}}
+
+

Оптимизационный примитив, который может быть использован для определения использовать ли блокирующие операции или атомарные. Возвращает true, если атомарные операции над массивaми с указанным размерами элеменатов будут выполнены с использованием аппаратных атомарных опреаций (как противоположность блокирующим). Только для специалистов.

+
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-atomics-object', 'Atomics')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
{{SpecName('ES8', '#sec-atomics-object', 'Atomics')}}{{Spec2('ES8')}} 
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

+ +

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Похожие заметки

+ +

До SpiderMonkey 48 {{geckoRelease(48)}}, финальные имена API и сематика не были еще реализованы. Изменения между Firefox v. 46 и v. 48:

+ + + +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html new file mode 100644 index 0000000000..6535d885e5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html @@ -0,0 +1,128 @@ +--- +title: Atomics.sub() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/sub +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/sub +--- +
{{JSRef}}
+ +

Статический метод Atomics.sub() вычитает представленное значение из текущего по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная опреация гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.

+ +

Синтаксис

+ +
Atomics.sub(typedArray, index, value)
+
+ +

Параметры

+ +
+
typedArray
+
Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
+
index
+
Позиция в typedArray для добавления value.
+
value
+
Число для вычитания.
+
+ +

Возвращаемое значение

+ +

Предыдущее значение в указанной позиции (typedArray[index]).

+ +

Исключения

+ + + +

Примеры

+ +
var sab = new SharedArrayBuffer(1024);
+var ta = new Uint8Array(sab);
+ta[0] = 48;
+
+Atomics.sub(ta, 0, 12); // возвращает 48, предыдущее значение
+Atomics.load(ta, 0); // 36
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-atomics.sub', 'Atomics.sub')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

+ +

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Смотри также

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