Cómo usar dosync en Clojure – Resuelto

La función dosync en Clojure se utiliza para realizar transacciones sobre refs, asegurando que las modificaciones sean atómicas y consistentes. Es útil cuando necesitamos realizar varias modificaciones de estado sin interferencias externas.

Uso básico de dosync

Podemos usar dosync para envolver varias operaciones que modifiquen un ref, garantizando que todas las modificaciones se realicen de forma coherente:

(def r (ref 0)) (dosync (ref-set r 10)) @r ;; 10

Transacciones complejas con dosync

También podemos usar dosync para realizar cambios complejos de forma atómica, asegurando que no haya efectos secundarios inesperados:

(def r1 (ref 0)) (def r2 (ref 0)) (dosync (ref-set r1 10) (ref-set r2 20)) @r1 ;; 10 @r2 ;; 20