Clojure - Atomics


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

内部,交换!读取当前值,将函数应用于它,并尝试比较并设置它。由于另一个线程可能在干预时间内更改了该值,因此它可能必须重试,并在自旋循环中执行此操作。最终效果是该值始终是所提供的函数Atomics地应用到当前值的结果。

例子

Atomics是在Atomics方法的帮助下创建的。以下程序显示了相同的示例。

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

输出

上述程序产生以下结果。

1

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

先生。 操作及说明
1 重置!

将atom的值设置为新值,而不考虑当前值。

2 比较并设置!

当且仅当Atomics的当前值与Atomics持有的旧值相同时,以Atomics方式将Atomics的值设置为新值。如果设置发生则返回 true,否则返回 false。

3 交换!

根据特定函数以Atomics方式将Atomics值与新Atomics值交换。