A,B,C,D四个进程,A向buf里面写数据,B,C,D向buf里面读数据,当A写完,且B,C,D都读一次后,A才能再写。用P,V操作实现。
semaphore empty = n
semaphore full;
semaphore mutex =1;
semaphore b = 1;
semaphore c = 1 ;
semaphore d = 1;
A (){ while(true){ p(empty); p(b);
p(c); p(d); p(mutex); write(); v(mutex);
v(full); } }
B (){ while(true){ p(full); p(mutex);
write(); v(mutex); v(empty); v(b); } }
C(){ while(true){ p(full); p(mutex);
write(); v(mutex); v(empty); v(c); } }
D (){ while(true){ p(full); p(mutex);
write(); v(mutex); v(empty); v(d); } }