Solution of P/C: unbounded buffer
Producer:
repeat
produce v;
wait(S);
append(v);
signal(S);
signal(N);
forever
Consumer:
repeat
wait(N);
wait(S);
w:=take();
signal(S);
consume(w);
forever
Initialization:
S.count:=1;
N.count:=0;
in:=out:=0;
critical sections
append(v):
b[in]:=v;
in++;
take():
w:=b[out];
out++;
return w;