¿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.isLockFree()
- La operación Atomics.isLockFree() devuelve verdadero si el tamaño dado es uno de la propiedad BYTES_PER_ELEMENT de tipos enteros TypedArray; de lo contrario, la operación Atomics.isLockFree() devuelve falso.
- Un elemento sin bloqueo se puede manipular sin necesidad de un bloqueo y el usuario no necesita proporcionar su propio mecanismo de bloqueo.
¿Qué es la propiedad BYTES_PER_ELEMENT del entero TypedArray?
- La propiedad TypedArray.BYTES_PER_ELEMENT representa el tamaño en bytes de cada elemento en una array con tipo.
- Dado que los objetos TypedArray difieren entre sí en la cantidad de bytes por elemento y en la forma en que se interpretan los bytes.
- La constante BYTES_PER_ELEMENT contiene el número de bytes que tiene cada elemento en el TypedArray dado.
Aplicaciones:
- Atomics.isLockFree() se utilizan para comprobar si una operación está libre de bloqueo o no.
- Se puede utilizar para la validación de la propiedad BYTES_PER_ELEMENT del entero TypedArray.
Sintaxis:
Atomics.isLockFree(size)
Parámetros utilizados:
tamaño: es el tamaño en bytes para comprobar
Valor devuelto:
Atomics.isLockFree() devuelve un booleano verdadero que indica que la operación está libre de bloqueo o devuelve falso.
A continuación se proporcionan ejemplos de la función anterior .
Input : Atomics.isLockFree(5) Output : false
Explicación: En este ejemplo, «5» se envía como parámetro al método Atomics.isLockFree() y devuelve falso porque «5» no es uno de los valores BYTES_PER_ELEMENT.
Input : Atomics.isLockFree(6) Output : false
Explicación: En este ejemplo, «6» se envía como parámetro al método Atomics.isLockFree() y devuelve falso porque «6» no es uno de los valores BYTES_PER_ELEMENT.
Input : Atomics.isLockFree(2) Output : true
Explicación: En este ejemplo, «2» se envía como parámetro al método Atomics.isLockFree() y devuelve verdadero porque «2» es uno de los valores BYTES_PER_ELEMENT.
Input : Atomics.isLockFree(4) Output : true
Explicación: En este ejemplo, «4» se envía como parámetro al método Atomics.isLockFree() y devuelve verdadero porque «4» es uno de los valores BYTES_PER_ELEMENT.
Los códigos para la función anterior se proporcionan a continuación.
Código 1:
javascript
<script> // Displaying the return value of the // Atomics.isLockFree() method console.log(Atomics.isLockFree(5)); // Atomics.isLockFree() will return false since // 5 is not one of the BYTES_PER_ELEMENT values </script>
PRODUCCIÓN :
false
Código 2:
javascript
<script> // Displaying the return value of // the Atomics.isLockFree() method console.log(Atomics.isLockFree(6)); // Atomics.isLockFree() will return false since 6 // is not one of the BYTES_PER_ELEMENT values </script>
PRODUCCIÓN :
false
Código 3:
javascript
<script> // Displaying the return value // of the Atomics.isLockFree() method console.log(Atomics.isLockFree(2)); // Atomics.isLockFree() will return true since // 2 is one of the BYTES_PER_ELEMENT values </script>
PRODUCCIÓN :
true
Código 4:
javascript
<script> // Displaying the return value of the // Atomics.isLockFree() method console.log(Atomics.isLockFree(4)); // Atomics.isLockFree() will return true since // 4 is one of the BYTES_PER_ELEMENT values </script>
PRODUCCIÓN :
true
Aplicación:
Cada vez que queremos verificar si una operación está libre de bloqueo o no, o queremos validar la propiedad BYTES_PER_ELEMENT del entero TypedArray, usamos la operación Atomics.isLockFree() en JavaScript.
Veamos un programa JavaScript:
javascript
<script> // Displaying the return value of // the Atomics.isLockFree() method console.log(Atomics.isLockFree(8)); // Atomics.isLockFree() will return true since 8 // is one of the BYTES_PER_ELEMENT(Float64Array) values </script>
Producción :
true
Excepciones:
- Si typedArray no es uno de los tipos de enteros permitidos, la operación Atomics.isLockFree( ) genera un TypeError.
- Si typedArray no es una array tipificada compartida, la operación Atomics.isLockFree( ) genera un TypeError.
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