博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产者-消费者问题
阅读量:5213 次
发布时间:2019-06-14

本文共 477 字,大约阅读时间需要 1 分钟。

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

原理如下:

一个长度为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)

转载于:https://www.cnblogs.com/bewolf/p/4452870.html

你可能感兴趣的文章
数据库系统原理
查看>>
leetcode 947. Most Stones Removed with Same Row or Column
查看>>
mong 按 geometry 搜索 地理位置信息
查看>>
框架网址和其他的一些网址
查看>>
angular ng-class\tab切换(从服务器引入数据)或用指令写
查看>>
不要追求最新的技术
查看>>
Oracle Golden Gate 系列十五 -- GG Trails 说明
查看>>
Oracle 11g 新特性 -- SecureFiles 说明
查看>>
Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
查看>>
梳理 Opengl ES 3.0 (三)顶点坐标变换
查看>>
Office2010安装错误
查看>>
Selenium2+python自动化7-xpath定位
查看>>
算法导论笔记:02基本排序查找算法
查看>>
Redis源码解析:08对象
查看>>
AIDL--------应用之间的通信接口
查看>>
java的JVM机制
查看>>
[Python笔记]第六篇:文件处理
查看>>
阶段一:读几本经济学书
查看>>
C结构体struct 和 共用体union的使用测试
查看>>
Jquery 的ajax里边不能识别$(this)
查看>>