Atomics: descripción general

Atomística

Atomics es un objeto en JavaScript que proporciona operaciones atómicas que se realizarán como métodos estáticos. Al igual que los métodos del objeto Math, los métodos y propiedades de Atomics también son estáticos. Los átomos se utilizan con objetos SharedArrayBuffer.

Las operaciones atómicas se instalan en un módulo atómico. A diferencia de otros objetos globales, Atomics no es un constructor. Atomics no se puede usar con un operador nuevo o se puede invocar como una función.

Operaciones atómicas

Las operaciones atómicas son ininterrumpidas.

Cuando se comparte la memoria, varios subprocesos pueden leer o escribir datos existentes en la memoria. Por tanto, si se modifica algún dato, habrá una pérdida de datos. Las operaciones atómicas se aseguran de que los valores predichos (datos) se escriban y lean con precisión. Las operaciones atómicas no se iniciarán hasta que finalice la operación actual, por lo que no hay forma de cambiar los datos existentes.

Ejemplo

A continuación se muestra el código que demuestra el uso de JavaScript Atomics Operation:

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>Atomics Example</title>
      <style>
         .result {
            font-size: 20px;
            border: 1px solid black;
         }
      </style>
   </head>
   <body onLoad="operate();">
      <h1>JavaScript Atomics Properties</h1>
      <div class="result"></div>
      <p>Atomics.add(arr, 0, 2)</p>
      <p>Atomics.load(arr, 0)</p>
      <script>
         function operate(){
            let container = document.querySelector(".result");
            // create a SharedArrayBuffer
            var buffer = new SharedArrayBuffer(25);
            var arr = new Uint8Array(buffer);
            // Initialise element at zeroth position of array with 6
            arr[0] = 6;
            container.innerHTML = Atomics.add(arr, 0, 2) + '<br/>' + Atomics.load(arr, 0);
         }
      </script>
   </body>
</html>

Salida

Verifique el resultado.