Primitiva de sincronización rendezvous

De Wikipedia, la enciclopedia libre

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[editar]

Ejemplo 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]