Weiter: 9.6 Familien von
Hinauf: 9.5 Das Rendezvous-Konzept
Zurück: 9.5.3 Der Private-Teil
Abschließend wollen wir noch eingehend erörtern, wie ein Studierender auf
unser Szenario reagieren kann. Viele Studenten können etwa nicht
,,endlos`` darauf warten, daß sie der Assistent betreuen kann, vielmehr
haben sie nur beschränkt Zeit, da sie z.B. anschließend eine Vorlesung
hören wollen. Eine solche Art der Problemstellung könnten wir wie
folgt programmieren:
select
In diesem Fall wartet der Studierende maximal 15 Minuten auf die Möglichkeit des Rendezvous,
dann bricht er das Warten ab und besucht eine Vorlesung. Das Laufzeitsystem nimmt
dabei den wartenden Studenten-Task aus der zum Entry
betreue gehörenden Warteschlange und setzt ihn fort.
Auch hier kann anstatt der Delay-Anweisung eine Delay-Until-Anweisung stehen.
Ein äußerst ungeduldiger Student könnte etwa auch folgenderweise vorgehen:
select
Assistent.betreue;
else
lauf_weg;
end select;
In diesem Fall würde der Studenten-Task die im Else-Zweig angegebenen
Anweisungen ausführen, wenn das Rendezvous nicht unmittelbar durchführbar ist
oder sofort eine Requeue-Anweisung with abort durchgeführt wird.
Es gibt auch noch die sogenannte asynchrone Select-Anweisung.
Bleiben wir bei unserem Beispiel:
select
Assistent.betreue;
then abort
lauf_weg;
end select;
Das bedeutet dann, daß der Studenten-Task die im ,,then abort``-Zweig
stehenden Anweisung ausführt, wenn das Rendezvous nicht unmittelbar möglich
ist oder wenn im Laufe des Rendevous ein requeue with abort
ausgeführt wird.
Sollte das Rendezvous unmittelbar möglich sein und während des Rendevous
kein requeue with abort auftreten, wird der ,,then abort``-Zweig
nicht ausgeführt.
Die letzte Möglichkeit, die dem Studierenden bleibt, seine Betreuung
durch einen Assistenten zu gestalten, sieht so aus:
select
delay 1560.0; -Minuten
besuche_vorlesung;
then abort
Assistent.betreue;
end select;
Hier wird nach Ablauf der angebenen Zeit versucht, die im ,,then abort``-Zweig
stehenden Anweisungen abzubrechen.
Danach werden die zwischen der Delay-Anweisung und den Schlüsselwörtern
then abort stehenden Anweisungen ausgeführt.
Sollte die Berechnung im ,,then abort``-Zweig beendet sein,
bevor die Zeit abgelaufen ist,
so wird versucht, die Delay-Anweisung abzubrechen.
Wenn das gutgeht, ist die gesamte Anweisung korrekt beendet.
Weiter: 9.6 Familien von
Hinauf: 9.5 Das Rendezvous-Konzept
Zurück: 9.5.3 Der Private-Teil
Johann Blieberger
Wed Feb 11 09:58:52 MET 1998