anche: defs, campi java, agenti
Il sito web del clojure contiene la documentazione per questi concetti:
Capisco le parole, ma non concettualmente ho lo scopo / significato di questi. Quando dovrei / come posso sapere quando usarli?
Modifica
I link che hai postato sono molto importanti da leggere, tuttavia consiglio anche questo: Memoria transazionale del software
Ricorda che le transazioni interrotte saranno ripetute . Cosa significa?
Significa che il codice all'interno di dosync potrebbe essere eseguito un paio di volte, quindi è necessario fare attenzione che il codice sia libero dagli effetti collaterali.
Un uso di agenti è di avere effetti collaterali controllati. Considera questo:
(dosync
(send log-agent message args)
(alter reference function))
L'STM manterrà tutte le azioni necessarie per essere inviato agli agenti fino al successo.
Qual è la differenza tra atomi e agenti ?
Gli aggiornamenti agli agenti avverranno in modo asincrono in un determinato punto del futuro, gli aggiornamenti agli atomi verranno eseguiti immediatamente.
Gli Atomi e gli agenti non devono essere eseguiti all'interno di una transazione, i riferimenti dovrebbero essere ( coordinati cambiamenti, ricordi?)
Leggi altre domande sui tag clojure