Your SlideShare is downloading. ×
0
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
La Cita en Ada
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

La Cita en Ada

1,398

Published on

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

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

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,398
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide






















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

    ×