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