Solution for P/C using Semaphores
Producer
repeat
produce item v;
MUTEX.wait();
b[in] = v;
in = in + 1;
MUTEX.signal();
forever;
What if Producer is slow or late?
Consumer
repeat
while (in <= out) nop;
MUTEX.wait();
w = b[out];
out = out + 1;
MUTEX.signal();
consume w;
forever;
Ans: Consumer will busy-wait at the while statement.
Previous slide
Next slide
Back to first slide
View graphic version