next up previous contents
Next: Bibliography Up: Sketch of a ``Device-Level'' Previous: Eager send protocol   Contents

Rendezvous protocol

This assumes the protocol:

  1. source sends ready-to-send
  2. destination sends ready-to-receive
  3. data is exchanged
Data is never buffered, although ready-to-send messages may be. This protocol is likely to be more efficient for long messages, because it eliminates the need to copy data from input-buffer to user space. A ready-to-receive message can include an identifier for the request object at the receiving end. The sending end can reflect this id in the header of the data packet, allowing the input handler at the receiving end to retrieve the relevant request when the data arrives.

Figure 7: Pseudocode for isend method (rendezvous protocol)
\begin{figure}\small\begin{verbatim}isend:
lock communication-sets
put a se...
...to-send messagereturn the request object\end{verbatim}\normalsize\end{figure}

Figure 8: Pseudocode for irecv method (rendezvous protocol)
\begin{figure}\small\begin{verbatim}irecv:
lock communication-sets
if irec...
...munication-setsreturn the request object\end{verbatim}\normalsize\end{figure}

Figure 9: Pseudocode for waitany method (rendezvous protocol)
\begin{figure}\small\begin{verbatim}waitany:
lock communication-sets
if all...
...d request was a send request
send the data\end{verbatim}\normalsize\end{figure}

Figure 10: Pseudocode for input handler threads (rendezvous protocol)
\begin{figure}\small\begin{verbatim}input handler threads:
loop {
receive h...
...n header)
}unlock communication-sets
}\end{verbatim}\normalsize\end{figure}



Bryan Carpenter 2002-07-12