10. Parallele Prozesse | ||||||
|
||||||
10.7.2 Attribute von Prozessen
Folgende Attribute können auf jedes Prozeßobjekt angewendet werden:
Das Attribut "T'terminated" liefert den Wert "true" vom Datentyp "Boolean", wenn der Prozeß beendet ist, andernfalls den Wert "false". Beispiel: Wird zwischen der ersten Schleife mit der Übergabe der Initialwerte an die Prozesse und der zweiten Schleife mit der Abfrage bzw. Ausgabe der Ergebnisse folgende Schleife eingefügt,
so wird zehnmal die Meldung "aufrufbar" ausgegeben. Attribut "E'count" Das Attribut "E'count" kann aus jedem Prozeßrumpf auf die Eingänge dieses Prozesses angewendet werden. Mit diesem Attibut wird abgefragt, wieviele Eingangsaufrufe an dem jeweiligen Eingang anstehen. Beispiel:
Die Endlosschleife bricht genau dann ab, wenn ein anderer Prozeß den Eingang "output" aufruft. Die Ausgabe mittels "text_io.put_line(...)" ist nicht notwendig, sie demonstriert aber beim Ablauf des Programms anschaulich, in welcher Reihenfolge den Prozessen vom Zuteilungsverfahren die Prozessorkapazität zugeteilt wird. Die Verzögerungsanweisung "delay 0.05" ist notwendig, falls das Zuteilungsverfahren kein preemptives Multitasking unterstützt. Bei diesem Zuteilungsverfahren kann nur dann die Prozessorkapazität einem anderen Prozeß zugeordnet werden, wenn der gerade aktive Prozeß sie (freiwillig) abgibt. Fehlte die Anweisung bei diesem Zuteilungsverfahren, so könnte die Endlosschleife nie abbrechen, da kein anderer Prozeß aktiv werden könnte, um den Eingang des aktiven Prozesses aufzurufen. Auch bei einem Zeitscheibenverfahren ist die Anweisung nützlich, da es Vergeudung von Rechnerkapazität ist, wenn ein Prozeß das ihm zugeteilte Zeitintervall in einer Endlosschleife verbrächte. Im folgenden Beispiel soll ein Prozeß solange Eingangsaufrufe mit der Übergabe von Werten akzeptieren, bis er explizit durch einen anderen Eingangsaufruf gestoppt wird. Damit im Falle eines Stoppens andere Aufrufer nicht vergeblich lange in ihren bereits abgesetzten Eingangsaufrufen "hängen" bleiben, sollen nach dem Stoppen alle wartenden Aufrufer akzeptiert werden, ohne daß deren Werte verarbeitet werden:
|
||||||
|