Con Clojure (y otros dialectos de Lisp) puede modificar el código de ejecución. Entonces, cuando una función se modifica durante el tiempo de ejecución ¿ese cambio está disponible para múltiples hilos?¿Cómo se modifican las funciones en tiempo de ejecución y luego se propagan a varios subprocesos?
Estoy tratando de averiguar cómo funciona técnicamente en un entorno concurrente: si varios hilos están usando una función foo , lo que sucede cuando redefino (digamos usando defn) la función foo ?
Tiene que haber alguna sincronización en marcha: cuándo y cómo ocurre dicha sincronización y cuánto cuesta.
Decir en una JVM, ¿se hace referencia a la función utilizando una referencia volatile
? Si es así, ¿significa que cada vez que hay una "función de búsqueda", entonces uno tiene que pagar el costo volatile
?
+1 y gracias por ser siempre tan útil con respecto a Clojure (y otros temas;) ¿Su primer punto es una oración o donde los dos primeros puntos se fusionaron en un solo párrafo? Creo que quisiste escribir algo un poco diferente:) –
Planeo aprenderlo todo, pero el camino es un poco largo;) –
@cedric Martin, voy a dar ese paso a través de la máquina de gramática ... ;-) –