2011-04-06 24 views
68

La única explicación del patrón del reactor que pude encontrar está en wikipedia, y es un poco demasiado abstracto (imho). ¿Puedes describir este patrón de una manera más concreta ... idealmente con fragmentos de código o diagramas de clase de alto nivel?Explicación del "Patrón del reactor"

+1

Encontré esta pregunta para ser una gran respuesta - http://stackoverflow.com/questions/9138294/what-is-the-different-between-event-driven-model-and -reactor-patrón –

Respuesta

30

Usted puede ser que desee comprobar el documento original que describe el patrón de diseño que http://www.cs.wustl.edu/~schmidt/PDF/reactor-siemens.pdf

El reactor se encarga de las solicitudes de servicio que están aplicada simultáneamente a una solicitud por uno o más clientes. Cada servicio en una aplicación puede consistir en métodos serveral y está representado por un controlador de eventos separado que es responsable de despachar las solicitudes específicas del servicio. El despachador de controladores de eventos se realiza mediante un operador de iniciación , que administra los controladores de eventos registrados. El demultiplexado de solicitudes de servicio se realiza mediante un demultiplexor de eventos síncronos .

15

Un reactor permite procesar múltiples tareas que bloquean (digamos, debido a IO) con un solo hilo. El reactor gestiona un conjunto de controladores y ejecuta un bucle de eventos. Cuando se llama para realizar una tarea, la vincula con un controlador nuevo o vacante que la activa. El bucle de eventos (1) encuentra todos los controladores que están activos y desbloqueados (o lo delega a una implementación de despachador) (2) ejecuta cada uno de estos manejadores encontrados secuencialmente hasta que completen o lleguen al punto donde bloquean. Los manejadores completados se vuelven inactivos y vacíos para reutilizarse, mientras que los manejadores activos bloqueados ceden, lo que permite que el bucle de eventos continúe. (3) Repite desde el paso (1)