Diferencia entre revisiones de «Programación en Ada/Tareas/Selección de citas»

Contenido eliminado Contenido añadido
m Arreglar enlaces por traslado de " / " a "/"
Línea 1:
{{navegador|libro=Programación en Ada
|actual=Selección de citas
|anterior=Tareas / Aceptación de citas
|siguiente=Tareas / Llamadas a punto de entrada complejas
}}
 
Línea 26:
{{Ada/Reservada|end}} {{Ada/Reservada|select}} ;
 
Esta alternativa de sentencia {{Ada/Reservada|select}} permite una combinación de espera y
selección entre varias aceptaciones de puntos de entrada a la tarea
alternativas. Además, la selección puede depender de condiciones
asociadas a cada alternativa.
 
La sentencia {{Ada/Reservada|delay}} sirve para indicar que, si en un determinado
intervalo de tiempo no se produce ninguna llamada que corresponda con las
selecciones anteriores, se ejecuten las sentencias posteriores.
 
La sentencia {{Ada/Reservada|terminate}} se elige en la sentencia {{Ada/Reservada|select}} si la unidad de
la que la tarea depende ha llegado al final y todas las tareas hermanas
y dependientes han terminado. Es una terminación controlada. Esta
alternativa no puede aparecer si hay una alternativa {{Ada/Reservada|delay}} o {{Ada/Reservada|else}}.
 
Por ejemplo:
Línea 95:
{{Ada/Reservada|end}} Variable_protegida;
 
La primera sentencia de la tarea es un {{Ada/Reservada|accept}} de Escribir, con lo que se asegura que la primera llamada le de un
valor a la variable local. En el supuesto de que se realizara una llamada a Leer, ésta quedaría encolada
supuesto de que se realizara una llamada a Leer, ésta quedaría encolada
hasta que se produjera la aceptación de Escribir. Después, la tarea
entra en el bucle infinito que contiene una sentencia {{Ada/Reservada|select}}. Es ahí
donde se acepta tanto llamadas a Escribir como a Leer de la siguiente
manera:
Línea 105 ⟶ 104:
Si no se llama ni a Leer ni a Escribir, entonces la tarea se queda
suspendida hasta que se llame a algún punto de entrada, en ese momento
se ejecutará la sentencia {{Ada/Reservada|accept}} correspondiente.
 
Si hay una o más llamadas en la cola de Leer, pero no hay llamadas en la