Primitiva de sincronización rendezvous
Rendezvous es una primitiva de sincronización asimétrica que permite a dos procesos concurrentes, el solicitante y el llamado, intercambiar datos de forma coordinada. El proceso que solicita el rendezvous debe esperar en el punto de reencuentro hasta que el proceso llamado llegue allí. Igualmente el proceso llamado puede llegar al rendezvous antes que el solicitante y debe esperar que él llegue al punto de encuentro para poder continuar procesando. La imagen de esperar en el punto de encuentro corresponde a colocar un proceso en espera inactiva hasta que la cita se cumpla. Durante el rendezvous los procesos pueden intercambiar datos.
Los datos intercambiados corresponden a parámetros de una llamada (desde el solicitante hacia el proceso llamado) y a resultados de una llamada (desde el proceso llamado hacia el solicitante), sin necesidad de almacenamiento intermediario.
La desventaja de la abstracción rendezvous es que no contempla pasaje de mensajes de forma asíncrona, como en el caso de las colas. En el lenguaje de programación Ada es preciso implementar comunicación asíncrona y otras abstracciones de comunicación a partir de rendevouz combinados con procesos intermedios y encapsulamiento.
Ejemplo
editarEjemplo en Ada donde el proceso Cola acepta un rendezvous de nombre agregar:
task type Cola is entry agregar(n: in Integer); entry eliminar(x: out Integer); ... end Cola
-- Implementación de Cola
task body Cola is begin ... accept agregar(n: in Integer) do ... -- Cuerpo de la operación end agregar; ... end Cola;
--LLamada desde otro proceso:
begin ... Cola.agregar(n) end
Enlaces externos
editar- RendezVous, Portland Pattern Repository's Wiki