Concurrencia en Ada - PowerPoint PPT Presentation

1 / 11
About This Presentation
Title:

Concurrencia en Ada

Description:

entry wait when Ocurred is. begin. null; end wait; entry signal when True is. begin ... Ocurred:=True; Requeue reset; end if; end signal; entry reset when wait' ... – PowerPoint PPT presentation

Number of Views:48
Avg rating:3.0/5.0
Slides: 12
Provided by: xxx997
Category:

less

Transcript and Presenter's Notes

Title: Concurrencia en Ada


1
Concurrencia en Ada
  • Características avanzadas

2
Características avanzadas
  • Requeue (reencolamiento)
  • Familias de puntos de entrada
  • Llamada temporizada
  • Llamada condicional
  • Select asíncrono

3
Requeue
  • requeue punto de entrada
  • Encola una tarea en un punto de entrada 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
  • No se puede abortar a una tarea que realice un
    operación requeue, salvo
  • requeue punto de entrada with abort

4
Requeue ejemplo
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
5
Llamada temporizada
  • La sentencia select sólo puede tener una llamada
    a un punto de entrada y sin guarda

select Peon.Preparar_Mezcla(cantidad) or
delay 1MINUTE --HAGO OTRAS COSAS Y ME OLVIDO
--DE LA MEZCLA end select
6
Llamada condicional
  • La sentencia select sólo puede tener una llamada
    a un punto de entrada y sin guarda

select Peon.Preparar_Mezcla(cantidad) else
--HAGO OTRAS COSAS Y ME OLVIDO --DE LA
MEZCLA end select
7
Select asíncrono(Asyncronous Transfer Control-
ATC)
  • Permite abandonar una actividad bajo determinadas
    circunstancias, pudiéndose ejecutar en ese caso
    un conjunto alternativo se sentencias

select --delay 5.0 --o Llamada a un punto de
entrada --sentencias alternativas then abort
--otras sentencias end select
Sentencias alternativas
1
Parte que se puede abortar
2
8
Ejemplo cálculo iterativo
protected Result is procedure Set_Estimate(Xin
Data) function Get_Estimate return
Data private The_EstimateData end
protected Trigger is entry wait procedure
signal private FlagBooleanFalse end
Tarea esclava
Tarea controladora
... select Trigger.wait then abort --Obtener
una estimación nueva_est Result.Set_Estimate(nue
va_est) end select ...
... Trigger.signal Final_AnswerResult.Get_Estim
ate ...
9
Familia de puntos de entradas. Tareas
type peticion is integer range 1..3 task
Servidor is entry Sevir(peticion)(params) end
Servidor task body Servidor is begin loop
select when guarda1 gt accept
Servir(1)(params) do ... end
Servir or when guarda2 gt accept
Servir(2)(params) do ... end
Servir or
when guarda3 gt accept
Servir(3)(params) do ... end
Servir end select end loop end Servidor

10
Familia de puntos de entradas. Tareas
type peticion is integer range 1..3 task
Servidor is entry Sevir(peticion)(params) end
Servidor task body Servidor is begin loop
for P in peticion loop select
accept Servir(p)(params) do ...
end Servir exit else
null end select end loop end
loop end Servidor
11
Familia 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
Write a Comment
User Comments (0)
About PowerShow.com