\begin{slide}{Rendez-Vous (I) in Ada}
\begin{verbatim}
task body Server is
   Sum : Integer := 0;
begin loop
      accept Foo (Item : in Integer) 
        do Sum := Sum + Item; end Foo;
      accept Bar (Item : out Integer) 
        do Item := Sum; end Bar;
   end loop;      
end Server;
A : Server; B : Integer;
begin
   A.Foo (4); A.Bar (B); A.Foo (5); A.Bar (B);
end B;
\end{verbatim}

\end{slide}

\begin{slide}{Rendezvous (II)}

\begin{itemize} \itemsep 3pt
\item 
  ein Prozeß (Server) führt \verb|accept| aus,

  anderer Prozeß (Client) führt Aufruf aus.
\item
  beide Partner müssen aufeinander warten
\item
  \verb|accept Foo ( .. ) do .. end Foo| ist atomar
\end{itemize}
Modellierung mittels Petri-Netz?

\end{slide}

\begin{slide}{Rendezvous (III)}

  allgemeinere Formen von \verb|accept|:
  \begin{itemize}\itemsep 1pt
  \item 
\begin{verbatim}
select accept Foo (Item : in Integer) 
           do .. end;
    or accept Bar ( ... )
end select;
\end{verbatim}

Modellierung mittels Petri-Netz?
\item
\begin{verbatim}
when X < Y => accept Foo (...)
select ... or terminate; end select;
select ... or delay 1.0 ; ... end select;
select ... else .. end select;
\end{verbatim}
  \end{itemize}
\url{http://en.wikibooks.org/wiki/Ada_Programming/Tasking}
\url{http://www.adaic.org/resources/add_content/standards/05aarm/html/AA-9-7-1.html}

\end{slide}
