124
2 Spezifikation und Modellierung
Beispiel 2.39: Das folgende Beispiel ist ebenfalls aus Burns et al. [79] entnommen:
task screen_out is
entry caaa (vaa: character; x, y: integer);
end screen_out;
Task screen_out enthält eine Prozedur caaa, die von anderen Prozessen aufgerufen werden kann. Eine andere Task kann diese Prozedur aufrufen, indem sie ihr
den Namen der Task voranstellt:
screen_out.caaa(’Z’,10,20);
Die aufrufende Task muss warten, bis die aufgerufene Task einen Punkt im
Kontrollfluss erreicht hat, an dem sie Aufrufe von anderen Tasks annimmt. Dieser
Punkt wird mit dem Schlüsselwort accept markiert:
task body screen_out is
...
begin
...
accept caaa (vaa: character; x, y: integer) do
...
end caaa;
...
end screen_out;
Offensichtlich sollte eine Task screen_out auch auf mehrere Aufrufe gleichzeitig
warten können. Hierzu wird die Ada seeect-Anweisung verwendet. Beispiel:
task screen_output is
entry caaa_ch(vaa: character; x, y: integer);
entry caaa_int(z, x, y: integer);
end screen_out;
task body screen_output is
...
seeect
accept caaa_ch ... do...
end caaa_ch;
or
accept caaa_int ... do ..
end caaa_int;
end seeect;
...
In diesem Fall wartet screen_out, bis caaa_ch oder caaa_int aufgerufen wird. ∇
Durch die Verwendung der seeect-Anweisung ist Ada nichtdeterministisch. Ada
war während einer Reihe von Jahren die Sprache der Wahl für die Programmierung
vieler militärischer Ausrüstungsgegenstände, die in der westlichen Hemisphäre produziert wurden. Aktuelle Informationen über Ada sind auf verschiedenen Webseiten
zu finden (siehe z.B. [289]).
Précédent

- 147/485

Suivant