📜  Clojure-Atoms

📅  最后修改于: 2020-11-05 04:05:20             🧑  作者: Mango


原子是Clojure中的一种数据类型,它提供了一种管理共享,同步,独立状态的方法。原子就像任何其他编程语言中的任何引用类型一样。原子的主要用途是保存Clojure的不可变数据结构。原子持有的值随交换更改!方法

在内部,交换!读取当前值,对其应用函数,然后尝试进行比较和设置。由于另一个线程可能在中间时间内更改了该值,因此它可能必须重试,并在旋转循环中这样做。最终结果是,该值将始终是原子地将提供的函数应用于当前值的结果。

原子是通过atom方法创建的。下面的程序显示了相同的示例。

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

输出

上面的程序产生以下结果。

1

通过使用@符号可以访问atom的值。 Clojure有一些可以对原子执行的操作。以下是操作。

Sr.No. Operations & Description
1 reset!

Sets the value of atom to a new value without regard for the current value.

2 compare-and-set!

Atomically sets the value of atom to the new value if and only if the current value of the atom is identical to the old value held by the atom. Returns true if set happens, else it returns false.

3 swap!

Atomically swaps the value of the atom with a new one based on a particular function.