next up previous contents index
Weiter: 19.2 Das Produzent/Konsument-Problem Hinauf: Entwurf von Echtzeit- Zurück: Entwurf von Echtzeit-

 

19.1 Das asymmetrische Rendezvous

  

Schon im vorhergehenden Kapitel haben wir aufgezeigt, daß das Rendezvous-Konzept in Ada asymmetrisch ist. Damals waren wir deshalb mit dem Problem des Pollings konfrontiert, das wir aber durch geschickte Programmierung lösen konnten. Das Rendezvous ist in mehrerer Hinsicht asymmetrisch (vgl. [NS88]):

  1. Der rufende Task muß den Namen des aufgerufenen Tasks und die seiner Entries kennen, nicht aber umgekehrt.
  2. Der Aufruf eines Task-Entry's kann innerhalb eines Unterprogrammes (als Teil eines Tasks oder als Teil eines eigenen Paketes) oder im Initialisierungsteil eines Paket-Body's erfolgen, eine Accept-Anweisung kann jedoch nur in einem Task-Body stehen.
  3. Ein rufender Task kann nur genau einen Task aufrufen. Er kann sich nur in einer einzigen Warteschlange eines Task-Entry's befinden. Ein aufgerufener Task hingegen kann auf viele verschiedene Aufrufe warten und kann viele Warteschlangengif haben, wo Tasks warten.
Aus diesen Eigenschaften des Ada-Tasking-Modells folgt, daß man folgende Arten von Tasks unterscheiden kann: Allgemeiner kann man auch zwischen aktiven   und passiven Objekten   und entsprechenden Mischform-Objekten  unterscheiden. Passive Objekte, die keine eigene Aktivitäten aufweisen (z.B. kein Else-Zweig im Task), können unter Umständen auch als geschützte Objekte realisiert werden. Das reduziert die Anzahl der benötigten Tasks und sollte daher, wenn möglich, durchgeführt werden.



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