Programación en Ada/Concurrencia
Concurrencia
editarPara más información, véase el artículo «Programación concurrente» en Wikipedia. |
La concurrencia es la simultaneidad de hechos. Un programa concurrente es aquel en el que ciertas unidades de ejecución internamente secuenciales (procesos o threads), se ejecutan paralela o simultáneamente.
Existen 3 formas básicas de interacción entre procesos concurrentes:
- Sincronización (p.e. las citas o paso de mensajes).
- Señalización (p.e. los semáforos).
- Comunicación (p.e. uso de memoria compartida).
La concurrencia o procesamiento paralelo se ha implementado en leguajes de programación de distinta manera:
- Programación concurrente clásica: se basa en la utilización de variables compartidas. Es el caso de Modula-2 o Concurrent Pascal. Para ello, se emplean herramientas como semáforos, regiones críticas y monitores.
- Programación concurrente distribuida: se basa en la transferencia de mensajes entre los procesos o threads. Es el caso de C/POSIX, Occam o Ada. Se emplean herramientas como canales, buzones y llamadas a procedimiento remoto.
En Ada se emplea una programación concurrente distribuida y la principal forma de sincronizar las unidades de ejecución, conocidas como tareas, son los puntos de entrada a la tarea o citas.
Subsecciones
editar- Tareas
- Sincronización de tareas mediante puntos de entrada o citas (entry)
- Aceptación de citas (accept)
- Selección de citas (select)
- Llamadas a punto de entrada complejas
- Tareas dinámicas: creación dinámica de tareas (tipos tareas)