Atomics.and() en JavaScript

¿Qué es la atómica? 
 

  • Atomics es un objeto en JavaScript que brinda la capacidad de realizar operaciones atómicas como métodos estáticos.
  • Al igual que el objeto Math en JavaScript, todas las propiedades y métodos de Atomics también son estáticos.
  • Los elementos atómicos se utilizan con objetos SharedArrayBuffer (búfer genérico de datos binarios de longitud fija).
  • Los átomos no son constructores como otros objetos globales.
  • Atomics no se puede usar con un nuevo operador o se puede invocar como una función.

Operaciones atómicas en JavaScript 
Múltiples subprocesos pueden leer y escribir los mismos datos en la memoria cuando hay memoria compartida. Para garantizar que los valores predichos se escriban y lean con precisión, no se puede iniciar otra operación hasta que finalice la actual. Las operaciones atómicas tampoco se pueden interrumpir.
 

Método Atomics.and()

  • Entre las operaciones atómicas, hay una operación incorporada Atomics.and() en JavaScript que se usa para calcular un AND bit a bit con un valor dado en una posición dada en la array.
  • La operación Atomics.and() devuelve el valor anterior en esa posición.
  • El tipo enterodarray, el índice y el valor se pasan como argumento a la función y devuelve el valor que se ha almacenado en la array respectiva.

Sintaxis: 
 

Atomics.and(typedArray, index, value)

Parámetros utilizados: este método acepta tres parámetros que se describen a continuación: 
 

  1. typedarray: este parámetro especifica una array de tipo entero compartida Int8Array , Uint8Array , Int16Array , etc.
  2. index: este parámetro especifica la posición en la array, typedArray para calcular AND bit a bit.
  3. valor: este parámetro especifica el número para calcular AND bit a bit.

Valor devuelto: el método Atomics.and() devuelve el valor antiguo en la posición dada (typedArray[index]).
Ejemplos: 
 

Input : arr[0] = 5
        Atomics.and(arr, 0, 3)
Output : 1

Input : arr[0] = 4
        Atomics.and(arr, 0, 6)
Output : 4

Los siguientes programas ilustran el método Atomics.and():
Programa 1: 
 

javascript

<script type="text/javascript">
 
// creating a SharedArrayBuffer
var buf = new SharedArrayBuffer(16);
var arr = new Uint8Array(buf);
 
// Initialising element at zeroth
// position of array with 5
arr[0] = 5;
 
// Displaying the SharedArrayBuffer
console.log(Atomics.load(arr, 0));
 
// Displaying the return value of the
// Atomics.and() method
console.log(Atomics.and(arr, 0, 9));
 
// Displaying the updated SharedArrayBuffer
console.log(Atomics.load(arr, 0));
 
</script>

Producción: 
 

5
1
1

Programa 2: 
 

javascript

<script type="text/javascript">
 
// creating a SharedArrayBuffer
var buf = new SharedArrayBuffer(25);
var arr = new Uint8Array(buf);
 
// Initialising element at zeroth
// position of array with 7
arr[0] = 7
 
// Displaying the SharedArrayBuffer
console.log(Atomics.load(arr, 0));
 
// Displaying the return value of the
// Atomics.and() method
console.log(Atomics.and(arr, 0, 2));
 
// Displaying the updated SharedArrayBuffer
console.log(Atomics.load(arr, 0));
 
</script>

Producción: 
 

7
2
2

Aplicación: 
Cada vez que queremos calcular AND bit a bit con cualquier valor y queremos devolver el valor calculado, usamos la operación Atomics.and() en JavaScript.
Veamos un programa JavaScript: 
 

javascript

<script type="text/javascript">
 
// creating a SharedArrayBuffer
var mybuffer = new SharedArrayBuffer(25);
var myarray = new Uint8Array(mybuffer);
 
// Initialising the element at zeroth
// position of array with 11
myarray[0] = 11;
 
// Displaying the return value of the
// Atomics.and() method
console.log(Atomics.and(myarray, 0, 13));
 
// Displaying the updated SharedArrayBuffer
console.log(Atomics.load(myarray, 0));
 
</script>

Producción: 
 

9
9

Excepciones: 
 

  • Si typedArray no es uno de los tipos de enteros permitidos, entonces la operación Atomics.and() arroja un TypeError.
  • Si typedArray no es una array tipificada compartida, entonces la operación Atomics.and() arroja un TypeError.
  • Si el índice utilizado como argumento para la operación Atomics.and() está fuera del límite en typedArray, entonces la operación Atomics.store() arroja un RangeError.

Navegador compatible:

  • Google Chrome
  • Borde de Microsoft
  • Firefox

Publicación traducida automáticamente

Artículo escrito por akash1295 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *