Ada Tasks I
Ada Tasks I
Hier: Nur ganz kurze Darstellung (mehr später) Zweck: Einfache Beispiele programmieren zu können
- Tasks können im Deklarationsteil eines Hauptprogramms eingeführt werden;
- Syntax:
Spezifikationsteil, Schnittstelle nach außen
task T is
...
end T;
task T;
task body T is
...
end T;
Beispiel
with Stringpack; use Stringpack;
procedure Tierwelt is
task Hund;
task body Hund is
begin
Print("wau");
Print("wau");
end Hund;
task Katz;
task body Katz is
begin
Print(miau");
end Katz;
begin
Print("hello world");
end Tierwelt;
-----------------------------------
6 pohlmann@pavian:Tierwelt
wau
wau
miau
hello world
Wirkung
- Tasks Hund und Katz werden aktiviert zugleich mit Hauptprogramm; d.h. alles geht los bei ,,begin`` des Hauptprogramms.
- Tasks Hund und Katz terminieren jeweils bei end ihres Rumpfs; Hauptprogramm terminiert bei end seines Anweisungsteils und nachdem die beiden tasks beendet sind;
- Hauptprogramm und die beiden tasks sind konkurrent zueinander;
- Tatsächliche Ausführungsweise hängt von technischen Umständen ab; bei 1-Prozessor-System wahrscheinlich pseudoparallele (= verzahnte) Ausführung nach Zeitscheibenverfahren in willkürlicher Reihenfolge Ada schreibt Verfahren nicht vor; Ada Implementierung/System kann Optimierungen vornehmen, z.B. einfache tasks ganz abarbeiten.
Ergebnis des Beispielprogramms tatsächlich unsicher: Alle drei konkurrente Teile greifen zu auf Stringpack/task.io/standard.io ..., d.h. laufen Gefahr, sich dabei gegenseitig zu stören.
Nächste Seite:Wechselseitiger Ausschluß und gemeinsameAufwärts:Vorlesungsskriptum zu Spezielle AnwendersprachenVorherige Seite:EinleitungInhaltsverzeichnis Ronald Blaschke 2001-06-02