next up previous contents index
Next: 3 POSIX threads Up: 2.3.2 Programmeigenschaften Previous: Lebendigkeit

Aufgaben

aufgabe354

aufgabe358

Lösungsvorschlag:

 VAR buf, p, c: INTEGER; p:=0; c:=0;

con producer; consumer end;

wobei
 producer:  VAR a[1..n] INTEGER;

while p < n do

await p = c end;

buf :=a[p + 1];

p:= p + 1 end

consumer: VAR b[1..n] INTEGER;

while c < n do

await p > c end;

b[c + 1]:= buf;

c:= c + 1 end

Ist das Programm deadlock frei ? Wenn ja, warum ?
Hinweis: Zeige, daß die Bedingung tex2html_wrap_inline2353 eine Invariante des Programms ist. Zeige dann, daß nur die sich ausschließenden Fälle (p = c) und (p > c) möglich sind.



parallel@rz.uni-mannheim.de
Mon Okt 28 14:38:25 PST 1996