• Save
La Cita en Ada
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

La Cita en Ada

on

  • 2,261 views

Presentación para la asignatura Programación Concurrente (curso 2008-2009)

Presentación para la asignatura Programación Concurrente (curso 2008-2009)

Statistics

Views

Total Views
2,261
Views on SlideShare
2,247
Embed Views
14

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 14

http://www.slideshare.net 14

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

La Cita en Ada Presentation Transcript

  • 1. Tipología de la Comunicación Basada en Mensajes & Cita con Ada Belén Albeza González Programación Concurrente 2008-2009
  • 2. 1. Mensajes
  • 3. Memoria Mensajes compartida
  • 4. Modalidades de paso de mensajes Asíncrono Síncrono
  • 5. Paso asíncrono Enviar Recibir
  • 6. Paso síncrono Enviar Recibir Cita Enviar Recibir
  • 7. 2. Cita en Ada
  • 8. ACCEPT • Sirven para definir las citas (son el RECEIVE) • Están contenidas dentro de una tarea (task) • Al invocarlas desde otra tarea, se produce el envío del mensaje (SEND) • Cuando una tarea ha ejecutado un ACCEPT y otra lo ha llamado, se produce el rendez- vous
  • 9. ACCEPT nombre_cita(args) DO --cuerpo END nombre_cita;
  • 10. Consideraciones sobre ACCEPT • Garantiza la exclusión mutua (una tarea sólo puede aceptar las citas de una en una) • Evita interbloqueos (se sigue orden FIFO) • Espera simétrica (tanto emisor como receptor se esperan hasta la cita)
  • 11. SELECT • Muy similar a un SWITCH en C • Sólo se ejecuta un caso si se cumple la condición y si hay una tarea esperando a dicha cita • Si hay varios casos en los que se cumplen ambas, se ejecuta sólo uno
  • 12. SELECT WHEN condicion1 => ACCEPT cita1(args) DO --cuerpo1 END cita1; --otras sentencias1 OR WHEN condicion2 => --otra cita END SELECT;
  • 13. 3. Ejemplo en Ada Productor-Consumidor
  • 14. Tareas • Productor • Consumidor • Buffer
  • 15. Tarea Buffer (I) • K: integer = 10 • items: array[0..K-1] • inicio, fin: integer = 0 • cantidad: integer = 0
  • 16. Tarea Buffer (II) while TRUE loop select when cantidad < K => --producir or when cantidad > 0 => --consumir end select; end loop;
  • 17. Tarea Buffer (III) when cantidad < K => accept Producir(x: in INTEGER) do items(fin) := x; end Producir; cantidad := cantidad +1; fin := (fin + 1) mod K;
  • 18. Tarea Buffer (IV) when cantidad > 0 => accept Consumir(x: out INTEGER) do x := items(inicio); end Producir; cantidad := cantidad -1; inicio := (inicio + 1) mod K;
  • 19. Tarea Consumidor while TRUE loop Buer.Consumir(n); Put(n); end loop;
  • 20. Tarea Productor n := 0; while TRUE loop Buer.Producir(n); n := n + 1; end loop;
  • 21. Preguntas (1) • ¿Cuál es la diferencia entre el paso de mensajes síncrono y el asíncrono? • ¿Qué pasa cuando una tarea llama a una cita pero la otra tarea no ha ejecutado un ACCEPT?
  • 22. Preguntas (II) • En un SELECT, ¿Qué otra condición, aparte de la del WHEN a de cumplirse para que se ejecute el ACCEPT de un caso determinado? • ¿Qué pasa si en un SELECT varios casos cumplen las condiciones?