Home
 

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;
    Falls Schnittstelle leer genügt die Deklaration

    task T;
    Rumpf, enthält (ähnlich Prozeduren) lokale Deklarationen und eine Folge von Anweisungen (also ein ,,Programm``)

    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.

    \includegraphics{progRun.eps}

  • 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.


nextnextupuppreviouspreviouscontentscontents
Nächste Seite:Wechselseitiger Ausschluß und gemeinsameAufwärts:Vorlesungsskriptum zu Spezielle AnwendersprachenVorherige Seite:EinleitungInhaltsverzeichnis
Ronald Blaschke 2001-06-02