生产者消费者问题
设信号量mutex1, mutex2, full1, full2, empty1, empty2分别表示1和2号缓冲区的访问互斥, 是否满, 是否空
semaphore mutex1 = 1, mutex2 = 1, full1 = 0, full2 = 0, empty1 = 1, empty2 = 1;
void A()
{
while(1)
{
p(empty1);
p(mutex1);
将一个物品放入缓冲区1;
v(mutex1);
v(full1);
}
}
void B()
{
while(1)
{
p(full1);
p(mutex1);
从1缓冲区取出一个物品;
v(mutex1);
v(empty1);
p(empty2);
p(mutex2);
将一个物品放入缓冲区2;
v(mutex2);
v(full2);
}
}
void C()
{
while(1)
{
p(full2);
p(mutex2);
将一个物品从缓冲区2取出;
v(mutex2);
v(empty2);
}
}
void main()
{
parbegin(A(), B(), C());
}
原文:https://www.cnblogs.com/mjn1/p/10632104.html