Atomics - Visão geral

Atomics

O Atomics é um objeto em JavaScript que fornece operações atômicas a serem realizadas como métodos estáticos. Assim como os métodos do objeto Math, os métodos e propriedades do Atomics também são estáticos. Atomics são usados ​​com objetos SharedArrayBuffer.

As operações Atomic são instaladas em um Atomics Module. Ao contrário de outros objetos globais, o Atomics não é um construtor. O Atomics não pode ser usado com um novo operador ou pode ser chamado como uma função.

Operações Atômicas

As operações atômicas são ininterruptas.

Quando a memória é compartilhada, vários threads podem ler ou gravar dados existentes na memória. Portanto, se algum dado for alterado, haverá perda de dados. As operações atômicas garantem que os valores previstos (dados) sejam gravados e lidos com precisão. As operações atômicas não serão iniciadas até e a menos que a operação atual seja concluída, portanto, não há como alterar os dados existentes.

Exemplo

A seguir está o código que demonstra o uso da Operação JavaScript Atomics -

<!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>

Resultado

Verifique o resultado.