Clojure-아톰

Atoms공유, 동기, 독립 상태를 관리하는 방법을 제공하는 Clojure의 데이터 유형입니다. 원자는 다른 프로그래밍 언어의 모든 참조 유형과 같습니다. 원자의 주요 용도는 Clojure의 불변 데이터 구조를 유지하는 것입니다. 원자가 보유한 값은swap! method.

내부적으로 스왑! 현재 값을 읽고 함수를 적용하고 비교 및 ​​설정을 시도합니다. 다른 스레드가 중간 시간에 값을 변경했을 수 있으므로 재 시도해야 할 수 있으며 스핀 루프에서 수행합니다. 순 효과는 값이 항상 원자 적으로 현재 값에 제공된 함수를 적용한 결과라는 것입니다.

원자는 원자 방법의 도움으로 생성됩니다. 동일한 예가 다음 프로그램에 표시됩니다.

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

산출

위의 프로그램은 다음과 같은 결과를 생성합니다.

1

@ 기호를 사용하여 atom 값에 액세스합니다. Clojure에는 원자에 대해 수행 할 수있는 몇 가지 작업이 있습니다. 다음은 작업입니다.

Sr. 아니. 운영 및 설명
1 초기화!

현재 값에 관계없이 atom의 값을 새 값으로 설정합니다.

2 비교 및 설정!

원자의 현재 값이 원자가 보유한 이전 값과 동일한 경우에만 원자 값을 새 값으로 원자 적으로 설정합니다. 설정이 발생하면 true를 반환하고 그렇지 않으면 false를 반환합니다.

교환!

특정 기능에 따라 원자의 값을 새 값으로 원자 적으로 바꿉니다.