Title: Concurrencia en Ada: Objetos protegidos requeue
1Concurrencia en AdaObjetos protegidos - requeue
2Reencolamiento
- Los objetos protegidos y las tareas Ada permiten
reencolar a una tarea de una entry a otra. - Esto facilita ciertas técnicas
- Distribuir peticiones desde un objeto hub hacia
un pool de objetos - Gestionar esperas condicionales que no se pueden
evaluar con el mecanismo de barreras en entries
3Requeue
- requeue Nombre_de_Entry
- Encola una tarea en una entry de
- la misma tarea
- otra tarea
- un objeto protegido
- Pasa implícitamente los parámetros de la llamada
original - No pueden pasarse parámetros explícitamente
4Ejemplo
protected Event is entry wait entry
signal private entry reset
OcurredbooleanFalse end Event protected
body Event is entry wait when Ocurred is
begin null end wait
entry signal when True is begin if
waitcountgt0 then OcurredTrue
requeue reset end if end signal
entry reset when waitcount0 is begin
OcurredFalse end reset end Event
5Excepciones
- Una excepción durante una operación protegida no
manejada localmente se propaga a la tarea llamada
6Familia de puntos de entradas. Objetos protegidos
type peticion is integer range 1..3 protected
Servidor is entry Sevir(peticion)(params) end
Servidor protected body Servidor is function
Condicion(Ppeticion) return boolean is begin
... end Condicion entry Servir(for P in
peticion)(params) when Condicion(P) is begin
Accion(params) end Servir end Servidor