Programación en Ada/Concurrencia

De Wikilibros, la colección de libros de texto de contenido libre.

← Unidades predefinidas/Ada.Exceptions Concurrencia Tareas →


[editar] Concurrencia

Wikipedia
Para 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:

  • 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.

[editar] Subsecciones

  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
Herramientas personales