互斥量和条件变量实现生产者消费者模型
来源:互联网 发布:软件天金加金 编辑:程序博客网 时间:2024/04/20 07:22
/*producer and constmer*/#include<stdio.h>#include<pthread.h>#include<string.h>#include<stdlib.h>pthread_mutex_t mutex;pthread_cond_t cond;//int good = 0;void *customer(void *argv)//消费者代码{while(1){pthread_mutex_lock(&mutex);if(good == 0){pthread_cond_wait(&cond,&mutex);//当产品为0的时候,阻塞在条件变量,并释放自己的互斥锁。解除阻塞后会去获取该互斥锁}good--;printf("customer:%d\n",good);pthread_mutex_unlock(&mutex);//消费完成释放互斥锁sleep(rand()%3);//实现随机消费}return NULL;}void *producer(void *argv){while(1){pthread_mutex_lock(&mutex);//获取互斥锁进行生产good++;printf("producer:%d\n",good);pthread_mutex_unlock(&mutex);//生产完成释放该锁if(good == 1)pthread_cond_signal(&cond);//产品==1的时候释放阻塞在产品为0的线程,通知其开始消费sleep(rand()%3);}return NULL;}void main(){pthread_t pt1,pt2;pthread_mutex_init(&mutex,NULL);//初始化互斥锁pthread_cond_init(&cond,NULL);//初始化条件变量
pthread_create(&pt1,NULL,customer,NULL);//创建消费者线程pthread_create(&pt2,NULL,producer,NULL);//创建生产者线程
pthread_join(pt1,NULL);//阻塞等待结束pthread_join(pt2,NULL);
pthread_mutex_destroy(&mutex);//销毁对应的锁pthread_cond_destroy(&cond);//销毁条件变量}
阅读全文
0 0
- 互斥量和条件变量实现生产者消费者模型
- 线程同步:条件变量实现生产者消费者模型
- 生产者--消费者模型之互斥锁和条件变量
- 条件变量+互斥锁解决生产者消费者模型
- 使用条件变量实现生产者消费者模式
- 生产者消费者问题条件变量实现
- pthread-生产者消费者问题【采用互斥量和条件变量】
- 并发编程(一): POSIX 使用互斥量和条件变量实现生产者/消费者问题
- Linux多线程消费者和生产者模型实例(互斥锁和条件变量使用)
- 用boost库条件变量实现后进先出型缓冲区的生产者消费者模型
- 【Linux】线程总结:线程同步 -互斥锁,条件变量,信号量实现多生产者多消费者模型
- c++11多线程 生产者-消费者模型/条件变量condition_variable
- Linux生产者消费者模型--基于线程条件变量
- 【线程的同步与互斥 (互斥量 条件变量 信号量)】生产者与消费者模型
- 并发编程(二):分析Boost对 互斥量和条件变量的封装及实现生产者消费者问题
- 多线程用互斥锁和条件变量实现生产者和消费者-------循环任务队列
- 多线程学习系列四 生产者和消费者 互斥所和条件变量实现
- windows 使用关键段和条件变量实现的生产者和消费者线程同步
- myeclipes mac版下载与破解
- bzoj1049 数字序列
- Hibernate Validator 6总结
- 26、Selenium + Python 实现 UI 自动化测试-调用 JavaScript 操作滚动条
- JavaScript中将九九乘法口诀在9乘9表格中输出
- 互斥量和条件变量实现生产者消费者模型
- 记事本代码
- Tomcat安装配置及CATALINA_HOME environment variable is not defined correctly问题的解决
- 10月16日云栖精选夜读:阿里云ApsaraCache的正式开源 中国科技再次回馈世界
- Android-APK的压缩工具:img-optimizer-gradle-plugin
- python基础--nonzero
- 最简单的视频网站(JavaEE+FFmpeg)
- 非常有用的 Oracle 查询语句
- 三极管的开关