#define N 100
semaphore mutex = 1;//互斥量
semaphore emtyBuffers =N;//管盘子的数量
semaphore fullBuffers =0;//汉堡的数量
//生产者
void producer()
{
while(true)
{
p(emptyBuffers);//生产者取出盘子准备生产,空盘子数量减一
p(mutex);//互斥量减一,只能生产者操作
produce();
v(mutex);//生产完成,释放互斥量
v(fullBuffers);//汉堡数量加一
}
}
//消费者
void consumer()
{
while(true)
{
p(fullBuffers);//消费者要消费汉堡了,汉堡数量减一
p(mutex);
consum();
v(mutex);
v(emptyBuffers);//汉堡拿走,放回盘子
}
}
互斥量的意义在于,有了它的存在,一旦有人进入临界区,其他人就不能操作