El módulo Event
proporciona un bucle de planificación. 
El modelo se basa en 
- La existencia de eventos. Los eventos tienen tipos específicos: señales, entrada/salida, relojes, variables 
que cambian,  etc. Incluso hay un tipo de evento idle que reconoce cuando el programa esta ocioso.
También hay eventos que estan formados por grupos de eventos
- Objetos que vigilan esos eventos (watchers). Los objetos watcher tienen un tipo asociado con
el tipo de evento que vigilan.
- Cada evento tiene un manejador (handler o callback), código que dice que hacer
cuando ocurre el evento
- El bucle de planificación
- Cuando se reconoce la presencia de un evento, el vigilante (watcher) produce
un nuevo objeto del tipo adecuado (por ejemplo, Event:Event::Io) y lo 
almacena en una cola.
 
- Este objeto representa una petición y contiene información sobre
el evento detectado, sobre el manejador que hay que llamar y sobre el watcher que lo detectó.
 
- De este modo el vigilante termina con su parte del manejo de este evento y esta en condiciones
de seguir vigilando.
 
- El objeto Event:Event::Iogenerado permanece en la cola hasta que es procesado por
el bucle de manejadores. El bucle llama entonces a la función de 
manejo referenciada por el objeto.
 
- Después que la petición ha sido satisfecha el bucle destruye el objeto petición
Obsérvese que puede suceder que en determinado instante haya en la cola diversos
objetos petición que hayan sido generados por el mismo vigilante.
Los vigilantes tienen un método  pending  que provee la lista de sus peticiones
pendientes
@pending_orders = $watcher->pending;
print $watcher->desc,": ",scalar(@pending_orders)," tasks\n";
  
 
Subsecciones
Casiano Rodríguez León

Programación Distribuida y Mejora del Rendimiento
por 
Casiano Rodríguez León 
is licensed under a Creative Commons Reconocimiento 3.0 Unported License.
Permissions beyond the scope of this license may be available at 
http://campusvirtual.ull.es/ocw/course/view.php?id=44.
2012-06-19