Concurrencia en Ada - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

Concurrencia en Ada

Description:

Los puntos de entrada se declaran en la especificaci n de una tarea, de forma ... Se llama a un punto de entrada con la misma sintaxis que una llamada a procedimiento. ... – PowerPoint PPT presentation

Number of Views:173
Avg rating:3.0/5.0
Slides: 26
Provided by: xxx997
Category:

less

Transcript and Presenter's Notes

Title: Concurrencia en Ada


1
Concurrencia en Ada
  • Invocación remota

2
Invocación remota en Ada
  • Puntos de entrada (entries)
  • Construcción accept
  • Espera selectiva con select
  • Espera selectiva con guardas
  • Terminación de tareas (terminate y abort)

3
La cita (rendez-vous)
  • Las tareas en Ada pueden dialogar unas con otras
    mediante paso de mensajes.
  • Se hace mediante el mecanismo de cita o
    rendez-vous (que significa sincronización e
    intercambio de información entre dos tareas dadas)

4
Escenarios de citas
5
Puntos de entrada (entries)
  • La cita entre dos tareas se produce como
    consecuencia de la llamada de una tarea a un
    punto de entrada declarado en otra tarea.
  • Los puntos de entrada se declaran en la
    especificación de una tarea, de forma similar a
    la declaración de un procedimiento en la
    especificación de un paquete.

task EJEMPLO is entry SIN_PARAMETROS entry
CON_PARAMETROS(Ain INTEGERBout FLOAT Cin out
BOOLEAN) private entry ..... end EJEMPLO
6
Puntos de entradaparámetros
  • Un punto de entrada puede tener parámetros in,
    out e in out
  • Los parámetros son el medio para el intercambio
    de información entre las dos tareas que dialogan
    en la cita.
  • Si en la declaración de un punto de entrada no
    hay parámetros significa que el punto de entrada
    sirve únicamente como una señal de
    sincronización.

7
Llamada a un punto de entrada
  • Se llama a un punto de entrada con la misma
    sintaxis que una llamada a procedimiento.
  • Nombre_de_tarea . Punto_de_entrada (args)

... TareaSalón.Enciende_La_Luz ... Spooler.Imprim
e(fichero.txt, modo gt borrador) ...
8
Recepción de las llamadas
  • Una tarea elige cómo y cuando recibir las
    llamadas que se le hacen.
  • De hecho, puede no contestar nunca a una llamada.
  • La recepción de llamadas se realiza con la
    construcción accept.

9
Sentencias accept
  • Las sentencias que se ejecutarán durante una cita
    se describen mediante las sentencias accept
    correspondientes
  • Las sentencias accept se encuentran dentro del
    cuerpo de la tarea.

task body EJEMPLO is begin ... accept
SIN_PARAMETROS do --conjunto de sentencias
que se ejecutarán en la cita
--correspondiente al punto de entrada
SIN_PARAMETROS exception end
SIN_PARAMETROS ... accept
CON_PARAMETROS(Ain INTEGERBout FLOATCin out
BOOLEAN) do --conjunto de sentencias que se
ejecutarán en la cita --correspondiente al
punto de entrada CON_PARAMETROS end
CON_PARAMETROS end A
10
Vista completa
task EJEMPLO is entry SIN_PARAMETROS entry
CON_PARAMETROS(Ain INTEGERBout FLOAT Cin out
BOOLEAN) end EJEMPLO task body EJEMPLO
is begin ... accept SIN_PARAMETROS do
--conjunto de sentencias que se ejecutarán en la
cita --correspondiente al punto de entrada
SIN_PARAMETROS end SIN_PARAMETROS ...
accept CON_PARAMETROS(Ain INTEGERBout
FLOATCin out BOOLEAN) do --conjunto de
sentencias que se ejecutarán en la cita
--correspondiente al punto de entrada
CON_PARAMETROS end CON_PARAMETROS ... end
A
11
La cita o rendez-vous
task PEON is entry PREPARAR_MEZCLA(cantidadin
INTEGER) end PEON task body PEON is begin
loop --Peón haciendo otros trabajos
... accept PREPARAR_MEZCLA(cantidad in
INTEGER) do --prepara la mezcla
... -mezcla preparada end
PREPARAR_MEZCLA end loop end PEON
task ALBAÑIL task body ALBAÑIL is cantidad
integer begin loop --Trabajando
... PEON.PREPARAR_MEZCLA(cantidad)
... end loop end ALBAÑIL
12
Sentencia Select
select accept A(X out item) do
--sentencias end --más sentencias or
accept B(Xin item) do --sentencias
end --más sentencias or ... end select
13
Sentencia Select con guardas
  • Las guardas se evalúan una sola vez, cuando la
    tarea entra en la construcción select.
  • La tarea se queda esperando en los accept que
    tienen las guardas evaluadas a cierto.
  • Si todas las guardas son falsas se eleva la
    excepción PROGRAM_ERROR
  • Si una guarda no existe se considera when true

select when condicion1 gt accept A(X out
item) do --sentencias end --más
sentencias or when condicion2 gt accept
B(Xin item) do --sentencias end
--más sentencias or ... end select
14
Sentencia Select (con delay)
select when condicion gt accept A(X out
item) do --sentencias end --más
sentencias or ... or ... or when
condicion gt --opcional delay 10MINUTOS end
select
15
Sentencia Select (con else)
  • Se toma el else si no hay ninguna cita
    disponible.
  • La rama else no puede tener guardas.
  • Una sentencia select no puede tener una rama
    else y otra delay

select when condicion gt accept A(X out
item) do --sentencias end --más
sentencias or ... or ... else
--sentencias end select
16
Atributo COUNT
  • El atributo ECOUNT devuelve el número de tareas
    que están en la cola del punto de entrada E en el
    momento de la llamada.
  • OJO al uso del atributo COUNT en las guardas !
  • Da el número de tareas encoladas en el momento en
    que la guarda se evalúa, y este puede cambiar
    antes de que se acepte la cita

17
Terminación de tareasterminate y abort
18
Terminación construcción terminate
task type progenitora task body progenitora is
task type T task body T is loop
--cuerpo end loop end T tareaT begin
... end progenitora
  • Cuándo termina la tarea padre ?
  • Select con alternativa terminate

19
Construcción terminate
  • Se toma la alternativa terminate si la unidad de
    la que la tarea depende ha llegado al final, y
    por tanto, está completada
  • y además todas las tareas hermanas y tareas
    dependientes han terminado o pueden análogamente
    seleccionar una alternativa terminate

select ... or ... or terminate end select
  • Puede estar guardada, pero no puede aparecer en
    una sentencia select que tenga una alternativa
    delay o else

20
Sentencia abort
  • La sentencia abort termina una o más tareas
    incondicionalmente
  • abort Nombre_de_Tarea

21
Sentencia abort (2)
  • Si se aborta una tarea, entonces todas las tareas
    que dependen de ella, o de un subprograma o
    bloque llamados en ese momento por ella, se
    abortan también.

22
Sentencia abort (3)
  • Situaciones
  • Tarea suspendida ? se aborta sin más
  • No suspendida
  • Caso especial si la tarea está en medio de una
    cita
  • La cita se completa, aunque
  • Tarea llamada -gt TASKING_ERROR
  • Tarea llamante -gt mientras dura la cita, queda en
    un estado anormal

23
Estado de una tarea
  • TTERMINATED
  • Cierto si T ha terminado
  • TCALLABLE
  • Cierto a menos que la tarea se haya completado o
    terminado o se encuentre en un estado anormal
    pendiente de que la aborten

24
TASKING_ERROR
  • Error durante la activación de alguna tarea
  • TASKING _ERRROR en la unidad progenitora
  • Aborta una tarea llamada durante una cita
  • TASKING_ERROR en la tarea llamante
  • Tareas encoladas en puntos de entrada de una
    tarea servidora que es abortada
  • TASKING_ERROR en las tareas encoladas

25
Otras situaciones de error
  • Si se produce una excepción durante una cita en
    la tarea llamada y no se maneja dicha excepción
    en el accept correspondiente, se propaga la
    excepción en ambas tareas
  • Si una tarea no maneja una excepción de ninguna
    manera, se abandona la tarea y se pierde la
    excepción
Write a Comment
User Comments (0)
About PowerShow.com