Hallo,
ich hab diese Aufgabe gegeben und irgendwie komm ich nicht ganz klar.
https://ibb.co/fYUpfp
Wir haben dazu folgende Notation:
• ch <=x: Wert von x wird über den Kanal ch gesendet.
• ch => y: Über Kanal ch empfangene Nachricht wird y zugewiesen.
Meine bisherige Lösung:
Zu Prozess P1:
int n = 0;
loop forever
p1: n = n + 2;
p2: ch[0] <=n;
Zu Prozess P2:
int n = 0;
loop forever
p1: n = n + 5
p2: ch[0] <=n
Zu Prozess P3:
int p1, p2 = 0
loop forever
p1: ch[0] => p1
p2: ch[1] => p2
if(p1 = p2)
print(p1);
Nun fehlen aber noch die Fälle p1<p2 und umgekehrt. Aber es kann ja sein, das p2= 15 und p1= 12 und dann beim nächsten p2=20 und p1 = 14 und das müsste ja dazwischen.
Hoffe auf eure Hilfe
ich hab diese Aufgabe gegeben und irgendwie komm ich nicht ganz klar.
https://ibb.co/fYUpfp
Wir haben dazu folgende Notation:
• ch <=x: Wert von x wird über den Kanal ch gesendet.
• ch => y: Über Kanal ch empfangene Nachricht wird y zugewiesen.
Meine bisherige Lösung:
Zu Prozess P1:
int n = 0;
loop forever
p1: n = n + 2;
p2: ch[0] <=n;
Zu Prozess P2:
int n = 0;
loop forever
p1: n = n + 5
p2: ch[0] <=n
Zu Prozess P3:
int p1, p2 = 0
loop forever
p1: ch[0] => p1
p2: ch[1] => p2
if(p1 = p2)
print(p1);
Nun fehlen aber noch die Fälle p1<p2 und umgekehrt. Aber es kann ja sein, das p2= 15 und p1= 12 und dann beim nächsten p2=20 und p1 = 14 und das müsste ja dazwischen.
Hoffe auf eure Hilfe