生产与消费者三种模型
来源:互联网 发布:网络集成商有哪些 编辑:程序博客网 时间:2024/06/05 07:06
1.生产者—消费者模型的321原则
生产者-生产者 互斥
消费者-消费者 互斥
生产者-消费者 互斥,同步
typedef struct _head //结构体声明{ int data; struct _head *next;}Node,*Node_p,**Node_pp;Node_p head; //头指针声明void InitList(Node_pp _h) //初始化带头节点链表{ *_h =(Node_p)malloc(sizeof(Node)); (*_h)->next = NULL;}void PushFrond(Node_p _h,int K)//{ Node_p tmp = _h->next; _h->next =(Node_p)malloc(sizeof(Node)); _h = _h->next; _h->data = K; _h->next = tmp;}Node_p PopFrond(Node_p _h){ if(_h->next == NULL) return NULL; Node_p tail = _h->next; _h->next = tail->next; return tail;}
void *consume(void *arg) // 用于消费,即调用PopFrond
void &product(void *arg) //用于生产,即调用PushFrond
pthread_mutex_t mutex_lock = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&mutex_lock);//加锁
pthread_mutex_unlock(&mutex_lock);//解锁
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
pthread_cond_wait(&cond,&mutex_lock);//等待
pthread_cond_signal(&cond);//发信号
void* product(void *arg){ while(1){ int n = rand()/12123; pthread_mutex_lock(&mutex_lock); //解锁访问 PushFrond(head,n); printf("product done! %d\n",n); pthread_mutex_unlock(&mutex_lock);//解锁 pthread_cond_signal(&cond);//生产完成,发送信号,消费者消费 sleep(2); } return NULL;}void *consum(void *arg){ while(1){ pthread_mutex_lock(&mutex_lock);//加锁访问 Node_p tmp = PopFrond(head); while(tmp == NULL)//当没有资源时,则阻塞等待 { pthread_cond_wait(&cond, &mutex_lock); tmp = PopFrond(head); } printf("consum done! %d\n",tmp->data); pthread_mutex_unlock(&mutex_lock);//解锁 } return NULL;}
阅读全文
0 0
- 生产与消费者三种模型
- 生产消费者模型
- 未完成-生产消费者模型
- linux生产消费者模型
- 生产消费者模型实现
- 生产消费者模型
- 等待唤醒机制与简单的生产消费者模型
- 并发基础 -- 生产消费者模型
- (转)生产消费者模型
- [Linux]生产者与消费者 三种模型 C
- [Linux]生产者与消费者 三种模型 C
- pythond多线程——生产消费者模型
- Python-yield模拟生产消费者模型
- 生产者与消费者模型(基于单链表、环形队列、多线程、多消费多生产)
- 读者写者模型(概念&与生产消费者的区别¥读写优先级问题)
- 生产者与消费者模型
- 生产者与消费者模型
- 生产者与消费者模型
- JAVA发送手机短信
- Attribute "xmlns" was already specified for element "web-app".问题的解决
- 用JavaScript改变table的背景色
- java的反射机制
- CSS文本超出n行就隐藏并显示省略号
- 生产与消费者三种模型
- Ubuntu循环登录libGL error: fbConfigs swrast等
- 在CentOS 7 64位系统上安装wps
- 第二章 Java的基本程序设计结构
- 【java学习之旅】——Struts2自定义拦截器三部曲
- Hello World感知机,懂你我心才安息 (深度学习入门系列之五)
- Java 7 新的 try-with-resources 语句,自动资源释放
- SQLAlchemy中ResultProxy的正确使用
- Windows+tomcat+Nginx集群