Rendezvous Synchronization Primitive
Rendezvous is an asymmetric synchronization primitive that allows two concurrent processes, the requester and the caller, to exchange data in a coordinated manner. The process requesting the rendezvous must wait at the rendezvous point until the called process arrives there. Likewise, the called process can reach the rendezvous before the requester and must wait for it to arrive at the rendezvous point in order to continue processing. The image of waiting at the meeting point corresponds to placing a process on idle wait until the appointment is fulfilled. During rendezvous processes can exchange data.
The data exchanged corresponds to parameters of a call (from the requestor to the called process) and to results of a call (from the called process to the requestor), without the need for buffering.
The disadvantage of the rendezvous abstraction is that it does not allow for the passage of messages asynchronously, as in the case of queues. In the Ada programming language it is necessary to implement asynchronous communication and other communication abstractions from rendevouz combined with intermediate processes and encapsulation.
Example
Example in Ada where the Queue process accepts a rendezvous of name add:
task type Cola is entry add(n: in Integer); entry delete(x: out Integer); ... end Cola
-- Cola implementation
task body Cola is begin... accept add(n: in Integer) do... Body of operation end add; ... end Cola;
--Lamada from another process:
begin... Cola.agregar(n) end
Contenido relacionado
Symbol table
Extraction of information
Firewall