【同步关系】缓冲区不满才能继续生产,缓冲区不空才能够消费
【互斥关系】所有进程互斥访问缓冲区
【注意细节】注意,这里的“单”指消耗同一个产品单一类型消费者,要与多消费者区分
semaphore mutex=1//互斥访问缓冲区
semaphore empty=n;
semaphore full=0;
void Producer(){
while(true)
{
p(empty);//消耗一个空位置放产品
p(mutex);//互斥访问缓冲区
produce();
v(mutex);
v(full);//生产了一个产品放入缓冲区
}
}
void Consumer(){
while(true)
{
p(fu1l);
p(mutex);
consume();
v(mutex);
v(empty);
}
}