生产者-消费者问题
来源:互联网 发布:视觉对位算法角度 编辑:程序博客网 时间:2024/05/30 22:59
单生产者P—单消费者C—单缓冲区B问题
1)进程互斥问题:缓冲区B是临界资源,进程P和C不能同时对B进行操作,即只能互斥的操作
2)进程同步问题:P不能往“满”的的缓冲区B放产品,C不能从空的缓冲区获得产品。当缓冲区满时,C必须先于P执行,当缓冲区空时,P必须先于C执行;
我们给出如下基于记录型(二元)信号量机制的解法
- // [10/9/2013 qingezha] 1生产者-1消费者-1缓冲区
- //P进程不能往满的缓冲区放产品,设置信号量为s1
- //C进程不能从空的缓冲区取得产品,设置信号量为s2
- //s1的初值为1 ,s2的初值为0,因为只有先生产产品才可以接着消费产品
- //P:
- while (1)
- {
- //生产产品
- P(s1);//获得B
- //向B放产品
- V(s2);//通知C取产品
- }
- //C:
- while (1)
- {
- P(s2);//得到通知,获得B
- //取产品
- V(s1);//通知P生产
- //消费产品
- }
// [10/9/2013 qingezha]1生产者-1消费者-1缓冲区//P进程不能往满的缓冲区放产品,设置信号量为s1//C进程不能从空的缓冲区取得产品,设置信号量为s2//s1的初值为1 ,s2的初值为0,因为只有先生产产品才可以接着消费产品//P:while (1){//生产产品P(s1);//获得B//向B放产品V(s2);//通知C取产品}//C:while (1){P(s2);//得到通知,获得B//取产品V(s1);//通知P生产//消费产品}
单生产者P—单消费者C—多缓冲区B问题
1)进程互斥问题:缓冲区B是临界资源,进程P和C不能同时对B进行操作,即只能互斥的操作
2)进程同步问题:P不能往“满”的的缓冲区B放产品,C不能从空的缓冲区获得产品。当缓冲区满时,C必须先于P执行,当缓冲区空时,P必须先于C执行;但是这里缓冲区大小为n,所以不能简单的使用互斥信号量来表示。
我们给出如下基于(多元)信号量机制的解法
- // [10/9/2013 qingezha] 1生产者-1消费者-多缓冲区
- //P进程不能往满的缓冲区放产品,设置信号量为s1
- //C进程不能从空的缓冲区取得产品,设置信号量为s2
- //s1的初值为n ,s2的初值为0,因为只有先生产产品才可以接着消费产品
- //P:
- int i = 0;
- while (1)
- {
- //生产产品
- P(s1);//获得B
- //向B放产品
- i = (i+1)%n;//环状队列 向buffer[i]放产品
- V(s2);//通知C取产品
- }
- //C:
- int j = 0;
- while (1)
- {
- P(s2);//得到通知,获得B
- //取产品
- j = (j+1)%n;//环状向buffer[j]取产品
- V(s1);//通知P生产
- //消费产品
- }
// [10/9/2013 qingezha]1生产者-1消费者-多缓冲区//P进程不能往满的缓冲区放产品,设置信号量为s1//C进程不能从空的缓冲区取得产品,设置信号量为s2//s1的初值为n ,s2的初值为0,因为只有先生产产品才可以接着消费产品//P:int i = 0;while (1){//生产产品P(s1);//获得B//向B放产品i = (i+1)%n;//环状队列 向buffer[i]放产品V(s2);//通知C取产品}//C:int j = 0;while (1){P(s2);//得到通知,获得B//取产品j = (j+1)%n;//环状向buffer[j]取产品V(s1);//通知P生产//消费产品}还有
M个生产者—K个消费者—N个缓冲区问题
待续!!
- 生产者-消费者问题
- 生产者-消费者问题
- 生产者-消费者问题
- 操作系统:生产者-消费者问题
- 生产者与消费者问题
- 生产者-消费者问题
- 关于生产者-消费者问题
- java生产者 消费者问题
- 消费者和生产者问题
- 生产者消费者问题
- 生产者消费者问题--多线程
- 生产者-消费者同步问题
- 生产者消费者问题
- 生产者与消费者问题
- 生产者 消费者问题!
- 生产者与消费者问题
- 生产者消费者问题
- 关于生产者-消费者问题
- android应用里面在某个界面禁止系统截屏功能的实现
- hdu 1003-Max Sum
- 得用java agent instrument动态修改或替换相关
- dedecms爆后台文件技巧
- 程序员与英语
- 生产者-消费者问题
- 振动Vibrator
- qtextend4.4.3 在nuc900平台下编译问题及解决办法
- jQuery 异步上传插件 Uploadify 使用 (Java平台)
- JNI java.lang.UnsatisfiedLinkError 的一些常见错误
- 2014校招百度一面经验、二面经验
- Android开发训练一
- Bloom Filter 原理与应用
- iOS重绘机制drawRect