sábado, 14 de agosto de 2010

Parábola del Actor: el Acto termina

En el post anterior (Parábola del Actor y el Objeto) se planteó la idea de procesos ligeros e inmortales en memoria. Pero esta situación no es realista, estos procesos deben terminar algún día. La solución es simple: el proceso no se vuelve a llamar a sí mismo; el garbage colector se encarga del resto.
Por ejemplo estos dos mensajes terminan el proceso:

vendeDor(PrecioArticulo, CompradorActual, VentasLogradas) ->
 receive
  {despedido, Jefe } ->
   Jefe ! {enCurso, self(), CompradorActual },
   adios;
  {jubilado, Jefe } ->
   Jefe ! {enCurso, self(), CompradorActual },
   graciasADios
 end. 

La siguiente pregunta es:
¿Qué sucede si hay una actualización del módulo "vendedor"? ¿Se detiene todo para poderlo online?


Lo mejor sería reemplazar el código "in-runtime" (en caliente), finalizando las operaciones pendientes usando el código antiguo y atendiendo las nuevas con el más reciente. (En Erlang existe y es un tema avanzado, se llama "release handling".)




Estos dos conceptos implican una entidad superior que lo controla todo. Obviamente se trata de un principio de diseño llamado árbol de supervisión compuesto por trabajadores y supervisores.




Espero con esto haber despertado un poco de interes en esta tecnología.



Viene de: Parábola del actor y del objeto.


Relacionados:
Erlang: Programación funcional y concurrente.
Mapeo de actores a objetos.

No hay comentarios: