首页 > 系统服务 > 详细

设有三个进程A、B、C,其中A与B构成一对生产者与消费者(A为生产者,B为消费者),共享一个由n个缓冲块组成的缓冲池;B与C也构成一对生产者与消费者(此时B为生产者,C为消费者)共享另一个由m个缓冲块组成的缓冲池。用P、V操作描述它们之间的同步关系。

时间:2019-03-31 17:28:20      阅读:1360      评论:0      收藏:0      [点我收藏+]
生产者消费者问题
设信号量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());
}

  

设有三个进程A、B、C,其中A与B构成一对生产者与消费者(A为生产者,B为消费者),共享一个由n个缓冲块组成的缓冲池;B与C也构成一对生产者与消费者(此时B为生产者,C为消费者)共享另一个由m个缓冲块组成的缓冲池。用P、V操作描述它们之间的同步关系。

原文:https://www.cnblogs.com/mjn1/p/10632104.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!