前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生产者-消费者问题

生产者-消费者问题

作者头像
用户1215536
发布2018-02-05 14:42:19
8000
发布2018-02-05 14:42:19
举报

接上一篇进程之间的同步和互斥,生产者-消费者问题常常用来解决多进程并发执行过程中的同步和互斥问题。

原理如下:

把一个长度为n(n>0)的有界缓冲区与一群生产者进程P1,P2,…,Pm和一群消费者进程C1,C2,…,Ck联系起来,只要缓冲区未满,生产者就可以往缓冲区中放产品,只要缓冲区未空,消费者就可以从中取走产品消耗。

(1)同步条件:生产者只有在至少有一个临界区的单元为空的时候,才能生产产品,消费者只有在至少有一个临界区被填上产品的时候,才能消耗产品,所以设置两个同步变量,avail为生产者的私有变量,初值为n,full为消费者的私有变量,初始值为0。

(2)互斥条件:生产者和消费者不能同时访问临界资源,所以设置一个互斥变量mutex初始值为1.

生产者进程:                消费者进程:

p(avail)                    p(full)

p(mutex)                    p(mutex)                    

生成一个产品                消费一个产品

v(full)                     v(avail)

v(mutex)                    v(mutex)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-04-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档