¿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.load()
- Entre las operaciones atómicas, hay una operación incorporada Atomics.load() que se usa para devolver un valor que reside en una posición determinada en una array.
- El typedarray entero y el índice del valor se pasan como argumento a la función.
- Atomics.load() devuelve el valor en la posición dada de la array.
Sintaxis:
Atomics.load(typedArray, index)
Parámetros utilizados:
- typedarray: es la array de tipo entero compartido que desea modificar.
- index: Es la posición en el typedArray desde donde desea cargar un valor.
Valor devuelto:
Atomics.load() devuelve el valor en la posición dada (typedArray[index]).
A continuación se proporcionan ejemplos de la función anterior.
Ejemplos:
Input : arr[0] = 9; Atomics.load(arr, 0); Output : 9 Input : arr[0] = 3; Atomics.add(arr, 0, 2) Atomics.load(arr, 0); Output : 5
Los códigos para la función anterior se proporcionan a continuación.
Código 1:
javascript
<script> // creating a SharedArrayBuffer var buf = new SharedArrayBuffer(25); var arr = new Uint8Array(buf); // Initialising element at zeroth position of array with 9 arr[0] = 9; // Displaying the SharedArrayBuffer console.log(Atomics.load(arr, 0)); </script>
PRODUCCIÓN :
9
Código 2:
javascript
<script> // creating a SharedArrayBuffer var buf = new SharedArrayBuffer(25); var arr = new Uint8Array(buf); // Initialising element at zeroth position of array with 3 arr[0] = 3; // Displaying the SharedArrayBuffer console.log(Atomics.load(arr, 0)); // Displaying the return value of the Atomics.add() method console.log(Atomics.add(arr, 0, 2)); // Displaying the updated SharedArrayBuffer console.log(Atomics.load(arr, 0)); </script>
PRODUCCIÓN :
3 3 5
Aplicación:
siempre que queramos devolver un valor desde una posición específica de una array, usamos la operación Atomics.load() en JavaScript.
Veamos un programa JavaScript:
javascript
<script> // creating a SharedArrayBuffer var mybuffer = new SharedArrayBuffer(25); var myarray = new Uint8Array(mybuffer); // Initialising the element at zeroth position of array myarray[0] = 40; // Displaying the SharedArrayBuffer console.log(Atomics.load(myarray, 0)); </script>
Producción :
40
Excepciones:
- Si typedArray no es uno de los tipos de enteros permitidos, la operación Atomics.load( ) genera un TypeError.
- Si typedArray no es una array tipificada compartida, la operación Atomics.load( ) genera un TypeError.
- Si el índice utilizado como argumento para la operación Atomics.load() está fuera del límite en typedArray, entonces la operación Atomics.load() arroja un RangeError.
Navegador compatible:
- Google Chrome
- Borde de Microsoft
- Firefox
Publicación traducida automáticamente
Artículo escrito por Shubrodeep Banerjee y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA