Clojure - dosync
Ejecuta la expresión (en un do implícito) en una transacción que abarca la expresión y cualquier llamada anidada. Inicia una transacción si ninguna ya se está ejecutando en este hilo. Cualquier excepción no detectada abortará la transacción y saldrá de dosync.
Sintaxis
A continuación se muestra la sintaxis.
(dosync expression)
Parameters - 'expresión' es el conjunto de expresiones, que vendrán en el bloque dosync.
Return Value - Ninguno.
Ejemplo
En el siguiente programa se muestra un ejemplo de cómo se usa.
(ns clojure.examples.example
(:gen-class))
(defn Example []
(def names (ref []))
(defn change [newname]
(dosync
(alter names conj newname)))
(change "John")
(change "Mark")
(println @names))
(Example)
Salida
El programa anterior produce la siguiente salida.
[John Mark]