生产者消费者问题
设信号量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