Next: Ficha de terminación asíncrona
Up: Patrones de diseño para
Previous: Reactor
Se usa cuando una aplicación
- que gestióna eventos
- debe actuar en respuesta a varias peticiones cuasi simultaneamente
- y procesa de modo asíncrono notificando la terminación
adecuadamente
Ejemplos:
- servidores para la Red
- interfaces al usuario para tratar componentes con
largos tiempos de calculo
- contestador automático
Comportamiento exigido (igual como en el caso del reactor):
- la aplicación no debe bloquear innecesariamente otras peticiones
mientras se está gestionando una petición.
- debe ser fácil incorporar nuevos tipos de eventos y peticiones
- la sincronización debe ser escondida para facilitar la implementación
de la aplicación
Posible solución:
- se divide la aplicación en dos partes: operaciones de
larga duración (que se ejecutan asíncronamente) y administradores
de eventos de terminación para dichas operaciones
- con un iniciador se lanza cuando haga falta la operación compleja
- las notificaciones de terminación se almacena en una cola
de eventos que a su vez está vaciando el administrador para
notificar la aplicación de la terminación del trabajo iniciado
- el proactor permite anadir/quitar gestores para operaciones y
administradores
Detalles de la implementación:
- muchas veces basta con un solo proactor en una aplicación que
se puede implementar a su vez como singleton.
- se usa varios proactores en caso de diferentes prioridades (de
sus colas de eventos de terminación)
- se puede realizar un bucle de iniciación/terminacion hasta que
algún tipo de terminación se haya producido (p.ej. transpaso
de ficheros en bloques y cada bloque de modo asíncrono.
- la operación asíncrona puede ser una operación del propio
sistema operativo
Next: Ficha de terminación asíncrona
Up: Patrones de diseño para
Previous: Reactor
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática