Учебники

Clojure — Атомы

Атомы — это тип данных в Clojure, который предоставляет способ управления общим, синхронным, независимым состоянием. Атом похож на любой ссылочный тип в любом другом языке программирования. Основное использование атома — хранение неизменяемых структур данных Clojure. Значение, удерживаемое атомом, изменяется со свопом! метод .

Внутренне поменяйся! читает текущее значение, применяет к нему функцию и пытается сравнить и установить его. Поскольку другой поток мог изменить значение за прошедшее время, ему, возможно, придется повторить попытку, и это происходит в цикле вращения. Чистый эффект состоит в том, что значение всегда будет результатом применения предоставленной функции к текущему значению атомарно.

пример

Атомы создаются с помощью метода атома. Пример того же показан в следующей программе.

Live Demo

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

Выход

Вышеуказанная программа дает следующий результат.

1

Доступ к значению atom осуществляется с помощью символа @. Clojure имеет несколько операций, которые могут быть выполнены на атомах. Ниже приведены операции.

Устанавливает значение атома в новое значение без учета текущего значения.

Атомно устанавливает значение атома в новое значение тогда и только тогда, когда текущее значение атома идентично старому значению атома. Возвращает true, если установлено, иначе возвращает false.

Атомно меняет значение атома на новое, основанное на определенной функции.