Clojure - Atomes

Atomssont un type de données dans Clojure qui permet de gérer l'état partagé, synchrone et indépendant. Un atome est comme n'importe quel type de référence dans n'importe quel autre langage de programmation. L'utilisation principale d'un atome est de contenir les structures de données immuables de Clojure. La valeur détenue par un atome est modifiée avec leswap! method.

En interne, échangez! lit la valeur actuelle, lui applique la fonction et tente de la comparer et de la définir. Puisqu'un autre thread peut avoir changé la valeur dans l'intervalle, il peut avoir à réessayer, et le fait dans une boucle de rotation. L'effet net est que la valeur sera toujours le résultat de l'application de la fonction fournie à une valeur courante, de manière atomique.

Exemple

Les atomes sont créés à l'aide de la méthode atom. Un exemple sur le même est montré dans le programme suivant.

(ns clojure.examples.example
   (:gen-class))
(defn example []
   (def myatom (atom 1))
   (println @myatom))
(example)

Production

Le programme ci-dessus produit le résultat suivant.

1

La valeur de l'atome est accessible à l'aide du symbole @. Clojure a quelques opérations qui peuvent être effectuées sur les atomes. Voici les opérations.

N ° Sr. Opérations et description
1 réinitialiser!

Définit la valeur de l'atome sur une nouvelle valeur sans tenir compte de la valeur actuelle.

2 comparer et définir!

Définit atomiquement la valeur de l'atome sur la nouvelle valeur si et seulement si la valeur actuelle de l'atome est identique à l'ancienne valeur détenue par l'atome. Renvoie true si set se produit, sinon il retourne false.

3 échanger!

Échange atomiquement la valeur de l'atome avec une nouvelle basée sur une fonction particulière.