同步规范------生产者与消费者(二)
2016-04-28 09:24
281 查看
the producer-consumer problem
the bonded-buffer problem
两个进程共享一个大小为N的缓冲区----其中一个进程向里面填充数据(生产者),另外一个进程负责从里面读取数据(消费者):
问题的核心:
当缓冲区满的时候,禁止生产者继续添加数据,直到消费者 读取了部分的数据之后;
当缓冲区空的时候,消费者应该等待对方继续生产之后在执行操作。
S_emptyCount:用于生产者获得获得可用的缓冲区的额空间的大小,初始值为N
S_fillCount用于消费者获取可用的数据的大小,初始值为0;
m_mutex:用于操作缓冲区,初始值为1
对于生产者 :
Produce_item
P(S_emptyCount)
P(S_mutex)
Put+item_to_buffer
V(s_mutex)
V(S_fillCount)
对于消费者
P (S_fillCount)
P (s_mutex)
Read_item_from_buffer
V(S_mutex)
V(S_emptyCount)
Consume
the bonded-buffer problem
两个进程共享一个大小为N的缓冲区----其中一个进程向里面填充数据(生产者),另外一个进程负责从里面读取数据(消费者):
问题的核心:
当缓冲区满的时候,禁止生产者继续添加数据,直到消费者 读取了部分的数据之后;
当缓冲区空的时候,消费者应该等待对方继续生产之后在执行操作。
S_emptyCount:用于生产者获得获得可用的缓冲区的额空间的大小,初始值为N
S_fillCount用于消费者获取可用的数据的大小,初始值为0;
m_mutex:用于操作缓冲区,初始值为1
对于生产者 :
Produce_item
P(S_emptyCount)
P(S_mutex)
Put+item_to_buffer
V(s_mutex)
V(S_fillCount)
对于消费者
P (S_fillCount)
P (s_mutex)
Read_item_from_buffer
V(S_mutex)
V(S_emptyCount)
Consume
相关文章推荐
- TCP/IP详解 卷一 ---------ICMP
- ZOJ 3605-F - Find the Marble-DP
- CentOS 7 下使用 iptables
- 3. Longest Substring Without Repeating Characters
- php中的OOP思想简介及如何使用oop面向对象实现一个’软件’
- ubuntu 安装 kvm
- Redis的三种启动方式
- Python 連接 MySQL
- 怎么把MVC的Controller拆分写到别的类库
- WinSock
- 网络直播监管趋严,主播们最终的出路在哪?
- 关于树状数组一些有意思的东西
- spark sql on hive
- Intent & Intent Filters
- IntelliJ IDEA 创建spring mvc项目(图)
- Jquery插件写法
- MySQL数据备份之mysqldump使用
- 开放-封闭原则
- centos6.5安装 redmine安装脚本 3.3.0版本
- java中堆和栈的区别