Atomics - Aperçu

Atomique

L'Atomics est un objet en JavaScript qui fournit des opérations atomiques à effectuer en tant que méthodes statiques. Tout comme les méthodes de l'objet Math, les méthodes et les propriétés d'Atomics sont également statiques. Atomics sont utilisés avec les objets SharedArrayBuffer.

Les opérations Atomic sont installées sur un module Atomics. Contrairement à d'autres objets globaux, Atomics n'est pas un constructeur. Atomics ne peut pas être utilisé avec un nouvel opérateur ou peut être appelé en tant que fonction.

Opérations atomiques

Les opérations atomiques sont ininterrompues.

Lorsque la mémoire est partagée, plusieurs threads peuvent lire ou écrire des données existantes dans la mémoire. Donc, si des données sont modifiées, il y aura une perte de données. Les opérations atomiques s'assurent que les valeurs prédites (données) sont écrites et lues avec précision. Les opérations atomiques ne démarreront pas tant que l'opération en cours ne sera pas terminée, il n'y a donc aucun moyen de modifier une donnée existante.

Exemple

Voici le code démontrant l'utilisation 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>

Production

Vérifiez le résultat.