10. Parallele Prozesse | ||||||
|
||||||
10.7.4 Zuweisung von Prioritäten in Prozessen
In bezug auf das Zuteilungsverfahren für die Prozessorkapazität können Prozessen auch Prioritäten zugewiesen werden. Wichtige Prozesse erhalten eine hohe Priorität, damit ihnen vorrangig die Prozessorkapazität zugewiesen wird. Dazu muß das Pragma "priority" verwendet werden. Beispiel:
Das Paket "service" stellt zwei Prozeßtypen zur Verfügung. Der eine nimmt einen Druckauftrag entgegen, der andere überwacht einen Wärmefühler. Das Drucken eines Textes hat in diesem Beispiel geringere Priorität als die Überwachung des Wärmefühlers. Das Standard-Paket "system" stellt neben vielem anderen auch den Typ "priority" zur Verfügung. Es ist nicht garantiert, daß dieser Typ mehr als einen Wert zur Verfügung stellt. Würde der Typ nur einen Wert definieren, so hätten im obigen Beispiel beide Prozesse die gleiche Priorität. Bei einem Übersetzer- bzw. Plattformwechsel kann daher nicht garantiert werden, daß ein Ada-Programm, dessen Prozeßdynamik ausschließlich von Prioritäten abhängt, auf der neuen Plattform einwandfrei lauffähig ist. Allerdings läßt sich einfach eine Anweisung konstruieren, die verhindert, daß ein solchermaßen abhängiges Programm überhaupt lauffähig ist. Beispiel: Es wird angenommen, daß das Ada-Programm vier verschiedene Prioritäten benötigt.
Dann garantiert diese Anweisung, daß zur Laufzeit eine Ausnahme ("constraint_error") ausgelöst wird, wenn weniger als vier Prioritäten angeboten werden. Ein Ada-Übersetzer ist nicht verpflichtet, zur Übersetzungszeit eine solche Anweisung abzulehnen, wenn er feststellt, daß zur Laufzeit eine Ausnahme ("constraint_error") ausgelöst wird. Allerdings produzieren manche Übersetzer während der Übersetzung Warnungen, die auf solche Stellen hinweisen. Dazu ist ein Ada-Übersetzer aber nicht verpflichtet. Äquivalent dazu ist:
Hier wird eine programmspezifische Ausnahme ausgelöst, wenn zu wenig Prioritäten angeboten werden. |
||||||
|