Selektiver
Nachrichtenaustausch
Ein selektiver
Nachrichtenaustausch ist möglich, wenn die Empfangsoperationen
mit sogenannten WÄCHTERn
[] arbeiten.
Beispiel:
select
receive variable1 from kanal1 ? anweisung1
[]
receive variable2 from kanal2 ? anweisung2
[]
receive variable3 from kanal3 ? anweisung3
end
select
Vor der Empfangsoperation
kann auch eine Bedingung angegeben werden.
bedingung1
receive variable1 from
kanal1 ? anweisung1
Bei erweitertem selectiven
Nachrichtenaustausch kann eine Nachbedingung angegeben
werden.
receive variable1
from kanal1 provided variable.status = dringend
? anweisung1
Es kann eine Alternative
vorgesehen werden.
Beispiel:
select
receive variable1 from kanal1 ? anweisung1
[]
receive variable2 from kanal2 ? anweisung2
[]
receive variable3 from kanal3 ? anweisung3
else
anweisung4
end
select
Es kann auch
eine zeitüberwachte Alternative vorgesehen werden.
Beispiel:
select
receive variable1 from kanal1 ? anweisung1
[]
receive variable2 from kanal2 ? anweisung2
[]
receive variable3 from kanal3 ? anweisung3
[]
delay t
? anweisung4
end
select
Die ankommenden Nachrichten
werden als Warteschlangen im Puffer bereitgehalten.
Bei Überprüfung
der Wächter und sonstiger Bedingungen wird die
entsprechende Anweisung
ausgeführt. Gibt es mehrere Möglichkeiten erfolgt
die Auswahl nichtdeterministisch.
Selektives Senden
ist schwieriger zu implementieren. Das
Senden soll nur erlaubt werden, wenn
ein entsprechendes Empfangsangebot vorliegt. Das Senden muß erst
vom Empfänger beantragt
werden.
zurück
zur Gliederung
|
Benutzer: Gast
Besitzer: didaktik Zuletzt geändert am:
|
|
|