Рубрики

Atomics.or () в JavaScript

Что такое атомика?
Atomics — это объект в JavaScript, который обеспечивает атомарные операции, выполняемые как статические методы. Как и объект Math в JavaScript, все свойства и методы Atomics также являются статическими.
Атомика используется с объектами SharedArrayBuffer (универсальный буфер двоичных данных фиксированной длины). Атомика не является конструктором, как другие глобальные объекты. Атомика не может использоваться с новым оператором или может вызываться как функция.

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

Метод Atomics.and ()
Среди атомарных операций есть метод Atomics.or (), который используется для вычисления побитовой операции ИЛИ с заданным значением в заданной позиции в массиве. Старое значение в этой позиции возвращается функцией Atomics.or (). Никакая другая операция записи не может произойти, пока измененное значение не будет записано обратно.

Синтаксис:

Atomics.or(typedArray, index, value)

Используемые параметры:

  1. typedarray: это общий целочисленный типизированный массив, который вы хотите изменить.
  2. index: это позиция в typedArray, где вы хотите вычислить побитовое ИЛИ.
  3. значение: это число, с которым вы хотите вычислить побитовое ИЛИ.

Возвращаемое значение:
Atomics.or () возвращает старое значение в заданной позиции (typedArray [index]).

Примеры вышеуказанной функции приведены ниже.

Примеры:

Input : arr[0] = 9;
        Atomics.or(arr, 0, 3);
Output : 9

Input : arr[0] = 3; 
        Atomics.or(arr, 0, 2);
Output : 3

Коды для вышеуказанной функции приведены ниже.
Код 1:

<script>

<! - создание SharedArrayBuffer ->
var buf = new SharedArrayBuffer(25);
var arr = new Uint8Array(buf);

  
<! - Инициализирующий элемент в нулевой позиции массива с 9 ->
arr[0] = 9;

  
<! - 9 (1001) ИЛИ 3 (0011) = 11 (1011) ->
<! - Отображение возвращаемого значения метода Atomics.or () ->
console.log(Atomics.or(arr, 0, 3));

  
<! - Отображение обновленного SharedArrayBuffer ->
console.log(Atomics.load(arr, 0));

</script>

ВЫХОД:

9
11

Код 2:

<script>

<! - создание SharedArrayBuffer ->
var buf = new SharedArrayBuffer(25);
var arr = new Uint8Array(buf);
<! - Инициализирующий элемент в нулевом положении массива с 3 ->
arr[0] = 3;

  
<! - 3 (0011) И 2 (0010) = 3 (0011) ->
<! - Отображение возвращаемого значения метода Atomics.or () ->
console.log(Atomics.or(arr, 0, 2));

  
<! - Отображение обновленного SharedArrayBuffer ->
console.log(Atomics.load(arr, 0));

</script>

ВЫХОД:

3
3

Исключения:

  • Выдает TypeError, если typedArray не является одним из допустимых целочисленных типов.
  • Выдает TypeError, если typedArray не является типом совместно используемого типизированного массива.
  • Выдает RangeError, если индекс находится вне границ в typedArray.

Рекомендуемые посты:

Atomics.or () в JavaScript

0.00 (0%) 0 votes