Con Clojure (e altri dialoghi Lisp) è possibile modificare il codice in esecuzione. Quindi, quando una funzione viene modificata durante il runtime, tale modifica è resa disponibile a più thread?Come vengono modificate le funzioni in fase di esecuzione e quindi propagate su più thread?
sto cercando di capire come funziona tecnicamente in un ambiente concorrente: se più fili utilizzano una funzione foo, cosa succede quando ridefinire (dire utilizzando defn) la funzione foo?
Deve esserci qualche sincronizzazione in corso: quando e come si verifica tale sincronizzazione e quanto costa?
Dire su una JVM, la funzione è referenziata utilizzando un riferimento volatile
? In tal caso, significa che ogni volta c'è una "ricerca di funzione", quindi è necessario pagare il costo di volatile
?
+1 e grazie per essere sempre stato così utile per quanto riguarda Clojure (e altri argomenti;) Il tuo primo punto è una frase o dove i due primi punti dovrebbero essere uniti in un paragrafo? Penso che volevi scrivere qualcosa di diverso:) –
Ho intenzione di imparare tutto, ma la strada è piuttosto lunga;) –
@cedric Martin, passerò quell'altro passaggio attraverso la grammatica ... ;-) –