Next: Monitores
Up: Patrones de diseño para
Previous: Aviso de hecho
  Índice General
El patrón active object es conocido también
como concurrent object.
Se usa cuando una aplicación
- usa varios hilos y objetos
- donde cada hilo puede realizar llamadas a métodos de varios
objetos que a su vez se ejecutan en hilos separados
Ejemplos:
- comportamiento de camarero y cocina en un restaurante
Comportamiento exigido:
- se quiere una alta disponibilidad de los métodos de un objeto
(sobre todo cuando no se espera resultados inmediatos, por ejemplo,
mandar mensajes)
- se quiere que la sincronización necesaria para involucrar los
métodos de un objeto sea lo más transparente que sea posible
- se quiere una explotación transparente del paralelismo disponible
sin programar explicitamente planificadores en la aplicación
Posible solución:
- para cada objeto se separa la llamada a un método de la
ejecución del código (es decir, se usa el patrón proxy)
- la llamada a un método (que se ejecuta en el hilo del cliente)
solamente añade un mensaje a la lista de acciones pendientes
del objeto
- el objeto ejecuta con la ayuda de un planificador correspondiente
las acciones en la lista
- la ejecución de las tareas no sigue necesariamente el orden de
pedidos sino depende de las decisiones del planificador
- la sincronización entre el cliente y el objeto se realiza
básicamente sobre el acceso a la lista de acciones pendientes
Detalles de la implementación:
- para devolver resultados existen varias estrategias:
bloqueo de la llamada en el proxy, notificación con un mensaje
(interrupción), uso del patrón futuro (se deposita el objeto
de retorno a la disposición del cliente)
- debido al trabajo adicional el patrón es más conveniente para
objetos gruesos, es decir, dondo el tiempo de cálculo de sus
métodos por la frecuencia de sus llamadas es largo
- se tiene que tomar la decisión apropriada: uso de objetos activos
o uso de monitores
- se puede incorporar temporizadores para abordar (o tomar otro
tipo de decisiones) cuando una tarea no se realiza en un tiempo
máximo establecido
Next: Monitores
Up: Patrones de diseño para
Previous: Aviso de hecho
  Índice General
© 2005, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática