Programación en Ada/Concurrencia

← Unidades predefinidas/Ada.Exceptions Concurrencia Tareas →


Concurrencia

editar

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:

  • 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
  1. Tareas
  2. Sincronización de tareas mediante puntos de entrada o citas (entry)
    1. Aceptación de citas (accept)
    2. Selección de citas (select)
    3. Llamadas a punto de entrada complejas
  3. Tareas dinámicas: creación dinámica de tareas (tipos tareas)
    1. Dependencia de tareas