真实的生产者-消费者模型
来源:互联网 发布:招聘数据处理算法 编辑:程序博客网 时间:2024/04/30 13:50
先说点其他的,pthread_cond_wait(cond, lock)在语义上等于pthread_mutex_unlock(lock), pthread_cond_wait(cond), pthread_mutex_lock(lock),但却不能拆开运行,在第一句和第二句之间有可能会错失信号。
下面是一个真实的模型,这个模型中有一个producer和多个consumer,producer有生产限制和结束标志,为简化过程,producer和consumer等待在一个条件变量上。
void producer()
{
pthread_mutex_lock(&res_lock);
while (RES.count == RES.MAX) {
pthread_cond_wait(&res_cond, &res_lock);
}
Produce(&RES);
if (RES.count == 1) {
pthread_cond_broadcast(&res_cond);
}
pthread_cond_unlock();
}
void consumer()
{
pthread_mutex_lock(&res_lock);
while (!RES.nomore && RES.count == 0) {
pthread_cond_wait(&res_cond, &res_lock);
}
pthread_cond_broadcast(&res_cond);
if (RES.nomore && RES.count == 0) {
pthread_mutex_unlock(&res_lock);
return;
}
Consume(&RES);
pthread_mutex_unlock(&res_lock);
}
当producer的产量达到RES.MAX最大限制时,便等待在res_cond上。当producer生产完全结束时,将RES.nomore置为true。如果producer生产完全结束,consumer会结束条件测试并退出。
- 真实的生产者-消费者模型
- 生产者与消费者的模型
- 生产者消费者模型的实现
- VC的生产者消费者模型
- 简单的生产者消费者模型
- 生产者消费者模型的演变
- 线程的生产者消费者模型
- 生产者消费者模型的实现
- 生产者消费者模型实现<二>真实实现BlockingQueue
- Linux下的生产者消费者模型模型
- 并发模型的生产者消费者模型
- 消费者&生产者模型的python代码
- 关于生产者与消费者模型的概念
- 生产者-消费者模型的Java实现
- 3.4生产者/消费者的线程同步模型
- 对于生产者消费者模型的理解
- 生产者-消费者模型的Java实现
- 生产者-消费者模型的java实现
- HTML中的Div分区属性
- Java同步机——关于synchronized
- Linux下AT&T汇编语法格式简介
- 很强的设计滚动的帖子,看了你会爱上它的!
- 对象揭秘[LanJoyner]--第三章 模块与导入
- 真实的生产者-消费者模型
- SQL网站入侵必备经典语句
- Motorola拆分MDB——一个时代的结束
- 用上Baidu HI ,初步测试。。
- java垃圾收集算法
- 以太网解决方案 ARM+DM9000AE
- 文件服务器的管理-开局篇!
- 叶云
- access-list