Atomics.isLockFree() 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.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

Deja una respuesta

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