Process PRODUCER var b: bufferpointer ; begin loop receive(CONSUMER,b); {get empty buffer} produce(b^) ; send(CONSUMER,b) ; end end Process CONSUMER const maxbuff = 6 ; {maximum buffers} var b : bufferpointer; i : integer ; begin for i:=1 to maxbuff do {initially, send empty buffers to producer} new(b) ; send(PRODUCER,b) end ; loop receive(PRODUCER, b) ; consumer(b^) ; send(PRODUCERm b) {return empty buffer} end; end ;