Suche Home Einstellungen Anmelden Hilfe  

Kommunikation über Nachrichten

Haben Prozesse keine gemeinsamen Datenbereiche, so kann die Synchronisation der Prozesse nicht über gemeinsame Variablen  erfolgen. Die Synchronisation muß hier durch Transferieren der  Daten von einem Datenbereich in den anderen erfolgen, mittels  NACHRICHTENAUSTAUSCH .

Nachrichten sind also Dateneinheiten, die Prozesse an andere Prozesse übergeben.

Bsp. zur Implementierung
( Botschaften { message } )
 
SENDEN  der Nachricht ?      Kommunikationskanal     ?  EMPFANGEN der Nachricht
{ send { communication channel } { receive } 
    - Daten aufnehmen 
    - legt fest wohin 
    - legt fest woher
x := 12; { x  ist die Prozeßvariable, die in die Nachricht kopiert wird }
send x to Kanal7 receive x from Kanal7; 
 
broadcast x ; {entspricht einer Rundsendung, alle denkbaren Empfänger erhalten die Nachricht }
multikcast x to {Kanal5, Kanal6, Kanal7} { nur für Empfänger  entsprechender Kanäle }
receive x from Kanal7; { x   wird der Empfangsoperation übergeben. Es gibt die folgenden Empfangsmöglichkeiten:
  • konsumierender Empfang ( zerstörend ) 
  • konservierender  Empfang ( bestimmte Löschoperationen )
  • zeitlich beschränkte Lebensdauer
                
Es gibt zwei Arten von Sendeoperationen.
 
nichtblockierend {der Prozeß wird nur für die Dauer des Kopierens der Dateneinheit in den  Kommunikationskanal blockiert}
blockierend {...  bis eine Empfangsanweisung ausgeführt wird}

Empfangsanweisungen   sind üblicherweise blockierend.
 

Der Nachrichtenaustausch erfolgt

Zwischen synchronen- und asynchronen Datenaustausch gibt es eine Dualitätsbeziehung (gegenseitige Umwandelbarkeit).  
Gliederung

Benutzer: Gast • Besitzer: didaktik • Zuletzt geändert am: