next up previous contents index
Weiter: 9.5.1 Wie ein Hinauf: 9 Tasks Zurück: 9.4.3 Die Abort-Anweisung

9.5 Das Rendezvous-Konzept in Ada

  

Tasks, die völlig unabhängig voneinander ablaufen, sind für die Programmierung eigentlich ohne Probleme, da sie auch als parallel ablaufende sequentielle Programme betrachtet werden können. Interessanter und vor allem schwieriger wird es, wenn wir in Betracht ziehen, daß Tasks untereinander kommunizieren und einander synchronisieren müssen. Diese beiden Aufgaben werden in Ada mit dem Rendezvous-Konzept   erledigt. Ein dazu notwendiges Sprachmittel - die Entries eines Tasks - haben wir schon kennengelernt.

In Ada verläuft die Kommunikation zweier Tasks asymmetrisch in dem Sinn, daß ein Unterschied besteht zwischen dem einen Entry aufrufenden und dem aufgerufenen Task. Der Aufruf eines Task-Entry 's unterscheidet sich syntaktisch in nichts vom Aufruf einer Prozedur. Semantisch jedoch gibt es wesentliche Unterschiede. Abgesehen von der bereits erwähnten Warteschlange, in der die Rufer abgelegt und mittels der sie - zufolge einer FIFO-Strategie - abgearbeitet werden, wird der rufende Task in eine Wartezustand versetzt, wenn der gerufene Task nicht bereit ist, die Kommunikation sofort zu bewerkstelligen. Auf seiten des gerufenen Tasks gibt es Accept-Anweisungen   für die spezifizierten Entries. Falls ein solcher Task zu einer Accept-Anweisung eines Entry's kommt, aber momentan kein Aufruf dieses Entry's vorliegt, so geht dieser Task in den Wartezustand über. Kann die Kommunikation ablaufen, so werden alle nach dem entsprechenden accept angegebenen Anweisungen abgearbeitet und anschließend beide Tasks fortgesetzt. Diese Art der Kommunikation von parallelen Prozessen nennt man Rendezvous.   





Johann Blieberger
Wed Feb 11 09:58:52 MET 1998