Clojure - átomos

Atomssão um tipo de dados no Clojure que fornecem uma maneira de gerenciar o estado independente, síncrono e compartilhado. Um átomo é como qualquer tipo de referência em qualquer outra linguagem de programação. O principal uso de um átomo é manter as estruturas de dados imutáveis ​​de Clojure. O valor mantido por um átomo é alterado com oswap! method.

Internamente, troque! lê o valor atual, aplica a função a ele e tenta compará-lo e defini-lo. Visto que outro thread pode ter alterado o valor no intervalo de tempo, pode ser necessário tentar novamente e o faz em um loop de rotação. O efeito líquido é que o valor será sempre o resultado da aplicação da função fornecida a um valor atual, atomicamente.

Exemplo

Os átomos são criados com a ajuda do método do átomo. Um exemplo do mesmo é mostrado no programa a seguir.

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

Resultado

O programa acima produz o seguinte resultado.

1

O valor de átomo é acessado usando o símbolo @. Clojure possui algumas operações que podem ser realizadas em átomos. A seguir estão as operações.

Sr. Não. Operações e descrição
1 Redefinir!

Define o valor do átomo para um novo valor, sem levar em consideração o valor atual.

2 compare e configure!

Atomicamente define o valor do átomo para o novo valor se e somente se o valor atual do átomo for idêntico ao antigo valor mantido pelo átomo. Retorna verdadeiro se definido acontecer, senão retorna falso.

3 troca!

Atomicamente troca o valor do átomo por um novo com base em uma função específica.