Next: Líder-y-Seguidores
Up: Patrones de diseño para
Previous: Monitores
Se usa cuando una aplicación
- tiene que procesar servicios síncronos y asíncronos a la vez
- que se comunican entre ellos
Ejemplos:
- administración de dispositivos controlados por interrupciones
- unir capas de implementación de aplicaciones que abajo trabajan
en forma asíncrono pero que hacia ofrecen llamadas síncronas
(read/write operaciones a trajetas de red)
- organización de mesas en restaurantes con un camarero de recepción
Comportamiento exigido:
- se quiere ofrecer una interfaz síncrona a aplicaciones que lo desean
- se quiere mantener la capa asíncrona para aplicaciones con altas
prestaciones (p.ej., ejecución en tiempo real)
Posible solución:
- se separa el servicio en dos capas que están unidos por un mecanismo
de colas
- los servicios asíncronos pueden acceder las colas cuando lo necesitan
con la posibilidad que se bloquea un servicio síncrono mientras tanto
Detalles de la implementación:
- hay que evitar desbordamiento de las colas, p.ej., descartar contenido
en ciertas ocaciones, es decir, hay que implementar un control de flujo
adecuado para la aplicación
- se puede aprovechar de los patrones objetos activos o monitores para
realizar las colas
- para evitar copias de datos innesesarias se puede usar memoria común
para los datos de las colas, solamente el control de flujo está
separado
Next: Líder-y-Seguidores
Up: Patrones de diseño para
Previous: Monitores
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática