Beispiele aus der Vorlesung
Beispiele
Folgende Beispiele benötigen die stringpack Bibliothek.
- tierwelt.adb
- Primitive Tasks in Ada.
- shared_demo1.adb
- Ungeschützter Zugriff von 2 Tasks auf eine gemeinsame Variable.
- shared_demo2.adb
- Brauchbarer Ansatz für den wechselseitigen Ausschluß.
- shared_demo2a.adb
- Wie shared_demo2.adb, jedoch mit Messung der Ineffizienz von busy waiting.
- tierwelt2.adb
- Demonstration von Ada-Rendezvous zur Synchronisation.
- shared_demo3.adb
- Schlechte Lösung zur Imitation von binären Semaphoren mittels Rendezvous.
- arbeitsteilung.adb
- Summiere 1..n: Hauptprogramm mit 2 Arbeitern, die summieren; Hauptprogramm faßt die Teilergebnisse zusammen.
- arbeitsteilung2.adb
- Summiere 1..n: Hauptprogramm mit 1 Arbeiter, der für sich einen Helfer erzeugt.
- arbeitsteilung2a.adb
- Summiere 1..n: Wie arbeitsteilung2.adb, jedoch mit Rendezvous zu Dritt.
- arbeitsteilung2b.adb
- Summiere 1..n: Wie arbeitsteilung2.adb, jedoch mit call-back.
- arbeitsteilung3.adb
- Summiere 1..n: Wie arbeitsteilung2.adb, jedoch mit dynamischer Erzeugung des Helfers nach Bedarf.
- arbeitsteilung4.adb
- Summiere 1..n: Hauptprogramm mit 1 Arbeiter, der einen Teil aufsummiert und für den Rest einen Task erzeugt (Rekursion).
- task_nr_demo.adb
- Demonstration: Erzeugung einer gegebenen Anzahl von Tasks und Messung der benötigten Zeit.
- bounded_buffer.adb
- Summiere 1..n: Altes Beispiel, jetzt mit protected entries.
- exception_demo1.adb
- Exception bei der Task Aktivierung.
- exception_demo2.adb
- Exception bei einem Kommunikationsproblem.
- exception_demo2a.adb
- Wie exception_demo2.adb, jedoch begrenzte accepts anstatt eines abort.
- exception_demo3.adb
- Exception ausgelöst im Rumpf einer task, ohne handler.
- exception_demo4.adb
- Exception ausgelöst im Rumpf einer task, mit handler.
- exception_demo5.adb
- Exception während eines Rendezvous, accept enthält keinen handler.
- exception_demo6.adb
- Exception während eines Rendezvous, accept enthält einen handler.
- bounded_buffer2.adb
- Summiere 1..n: Consumer-Producer-Problem mit task als Puffer; vgl. bounded_buffer.adb.
- primes.adb
- Primzahlen durch Siebmethode.
- watchdog_demo.adb
- Demonstration der delay-Alternative durch einen Watchdog.
- readers_writers1.adb
- Readers-Writers Demo, keine Bevorzugung des Schreibers, keine potentiell blockierenden Operationen.
- readers_writers2.adb
- Readers-Writers Demo, Bevorzugung des Schreibers, potentiell blockierende Operationen erlaubt.
- readers_writers2a.adb
- Readers-Writers Demo, keine Bevorzugung des Schreibers, potentiell blockierende Operationen erlaubt.
- readers_writers3.adb
- Readers-Writers Demo, Bevorzugung des Schreibers, potentiell blockierende Operationen erlaubt.
- philosophers.adb
- Die speisenden Philosophen.
- grid.adb
- Beispiel für chaotische Iteration; Lösung einer partiellen Differentialgleichung.
- gridsynchro.adb
- Wie Beispiel grid.adb, jedoch zum Vergleich mit Standard-Iteration.
- grid2.adb
- Wie Beispiel grid.adb, mit besserem Terminierungsprotokoll.
- resources1.adb
- Ressource-Management für variierende Anfragen. Version 1: Doppelte Interaktion.
- resources2.adb
- Ressource-Management für variierende Anfragen. Version 2: Erneute Einreihung unbearbeiteter Anfragen.
- metro.adb
- Illustration des requeue-Sprachkonstrukts. Modellierung einer U-Bahn-Linie mit 1 Zug und mehreren Stationen, wo Passagiere ein- und aussteigen.