Frecuentemente, las
tareas∞ interaccionan entre sí y necesitan un mecanismo para comunicarse y sincronizarse, este mecanismo que ofrece
Ada se conoce como la
cita (rendezvous)∞ o punto de entrada a la tarea.
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 la tarea, por ejemplo:
task∞ Tarea
is∞
entry∞ Entrada (N: Integer);
end∞ Tarea;
Un punto de entrada se asemeja a un
procedimiento∞. Los parámetros que admiten son de modo in, out o in out, por defecto, se sobreentiende in. Para invocar a un punto de entrada, se procede de igual manera que en un procedimiento, por ejemplo:
T: Tarea;
-- ...
T.Entrada (8);
Nótese que se debe emplear la notación punto siempre que se realice la llamada fuera de la misma tarea pues una tarea no puede aparecer en una
cláusula use∞. Realizar una llamada a un punto de entrada propio desde la misma tarea está permitido sintácticamente, pero resulta ilógico, pues produciría un interbloqueo consigo misma.
También se pueden definir varios puntos de entrada simultáneamente, por ejemplo:
type∞ TNivel
is∞ Integer
range∞ 1..10;
task∞ Controlador
is∞
-- Se define un punto de entrada por cada nivel.
entry∞ Aviso (TNivel) (Elem: TElemento);
end∞ Controlador;
Y se podría llamar a un punto de entrada de los 10 definidos como, por ejemplo:
ProcesoColtrol: Controlador;
-- ...
ProcesoControl.Aviso (3) (1773);
Con ello, se llama al punto de entrada Aviso con el nivel 3 y parámetro 1173.
Manual de referencia de Ada