#include <stdio.h>
#include <pthread.h>
#define MAX 10 //需要生产的数量
pthread_mutex_t the_mutex;
pthread_cond_t condc, condp;
int buffer = 0;//生产者、消费者使用的缓冲区void *producer(void *ptr)
{int i;for(i=1; i<=MAX; i++){pthread_mutex_lock(&the_mutex); //互斥使用缓冲区while(buffer !=0) pthread_cond_wait(&condp, &the_mutex);printf("procucer produce item %d\n",i);buffer = i; //将数据插入缓冲区pthread_cond_signal(&condc);//唤醒消费者pthread_mutex_unlock(&the_mutex);//释放缓冲区}pthread_exit(0);}void *consumer(void *ptr)
{int i;for(i=1; i<=MAX; i++){pthread_mutex_lock(&the_mutex);//互斥使用缓冲区while(buffer ==0) pthread_cond_wait(&condc, &the_mutex);printf("consumer consume item %d\n",i);buffer = 0;//从缓冲区中取出数据pthread_cond_signal(&condp);//唤醒生产者pthread_mutex_unlock(&the_mutex);//释放缓冲区}pthread_exit(0);}int main(int argc, char *argv[])
{pthread_t pro, con;pthread_mutex_init(&the_mutex, 0);pthread_cond_init(&condc,0);pthread_cond_init(&condp,0);pthread_create(&con, 0, consumer, 0);pthread_create(&pro, 0, producer, 0);pthread_join(pro,0);pthread_join(con,0);pthread_cond_destroy(&condc);pthread_cond_destroy(&condp);pthread_mutex_destroy(&the_mutex);return 0;
}

gcc -o consumer-producer -lpthread consumer-producer.c

运行结果:
 
 

转载于:https://www.cnblogs.com/justinzhang/archive/2011/12/21/2296289.html

Linux下生产者与消费者问题相关推荐

  1. Linux并发程序课程设计报告,网络操作系统课程设计--进程机制与并发程序设计-linux下生产者与消费者的问题实现.doc...

    网 络 操 作 系 统 课 程 设 计 网络操作系统课程设计 设计内容:进程机制与并发程序设计inux下生产者与消费者的问题实现进程机制与并发程序设计inux下生产者与消费者的问题实现 (1)掌握基本 ...

  2. linux使用线程实现生产者消费者问题,Linux下生产者与消费者的线程实现

    代码见<现代操作系统> 第3版. 为了显示效果,添加了printf()函数来显示运行效果 #include #include #define MAX 20 pthread_mutex_t ...

  3. Linux下生产者与消费者模型

    1. 概念   有一个或多个生产者生产某种类型的数据,并放在缓冲区里(生产者),有一个消费者从缓冲区中取数据,每次取一项(消费者).系统保证任何时候只有一个主题可以访问缓存区.所以当生产满时,生产者不 ...

  4. Linux下生产者消费者问题的C语言实现

    注:查看全文请关注作者,或点击前往:生产者-消费者问题的C语言实现 实验六 生产者-消费者问题实现 实验题目 要求 在Linux操作系统下用C实现经典同步问题:生产者-消费者,具体要求如下: (1) ...

  5. 【Linux】生产者与消费者模型、信号量、死锁

    目录 死锁 死锁的产生场景 死锁的gdb分析 1.通过调试可执行程序来分析 2.通过调试正在运行的程序 死锁的必要条件 死锁的预防 生产者与消费者模型 123规则 应用场景及特点 代码实现: 信号量 ...

  6. 【Linux下】 线程同步 生产者与消费者模型

    文章目录 [Linux下] 线程同步 生产者与消费者模型 线程同步 同步概念与竞态条件 条件变量 条件变量本质 操作条件变量 初始化和销毁条件变量 等待 唤醒 通过条件变量实现的简单线程同步例子 为什 ...

  7. Linux下实现多线程的生产者消费者问题

    Linux下实现多线程的生产者消费者问题 一.原理的理解 生产者-消费者问题是一个经典的线程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制.在同一个线程地址空间内执行的两个线程 ...

  8. windows下如何进行linux编程,生产者-消费者问题编程简单实现--windows和linux下

    又是某课程的实验(感觉好烦啊啊...),这次终于不用编译内核了,但是但是,他让我们写多线程.好吧,那就写写写,但是等等..他要我们实现生产者-消费者同步问题,要用信号量解决同步问题..这几个都是什么鬼 ...

  9. 在Linux系统下生产者消费者,生产者-消费者问题实现 (linux下C语言)

    操作系统的一个经典问题是"生产者-消费者"问题, 这涉及同步信号量和互斥信号量的应用, 在这里,我用线程的同步和互斥来实现. /* * author 张文 * 2008/06/20 ...

  10. Linux系统编程:使用semaphore信号量和mutex互斥量实现多个生产者和消费者模型

    代码实现 如题,使用semaphore信号量和mutex互斥量实现多个生产者和消费者模型.本来是想只用信号量实现生产者消费者模型的,但是发现 只能在一个生产者和一个消费者之间,要在多个生产者和消费者模 ...

最新文章

  1. (筆記) 如何安裝Altera USB Blaster? (SOC) (Quartus II) (DE2)
  2. JavaScript是如何工作的:与WebAssembly比较及其使用场景
  3. BMP图片的解析,关于压缩方式
  4. 借助开源工具高效完成Java应用的运行分析
  5. SolverParameter
  6. 【CV】关注度越来越高的行人重识别,有哪些热点?
  7. json lib java_Json-lib 进行java与json字符串转换之二
  8. db2有主键时默认hash分区_彻底搞懂 MySQL 分区!
  9. 学习笔记-AngularJs(四)
  10. hbase1.1.1 连接集群_Hadoop2.7.1+Hbase1.1.2集群环境搭建(10) hadoop hbase kerberos
  11. 恋舞ol服务器维护中,【公告】《恋舞OL》5月20日更新维护公告
  12. Netty核心组件 ChannelPipeline和ChannelHandler与ChannelHandler的入站出站规则
  13. python语言应用章节答案_智慧树APPPython语言应用第十单元章节测试答案
  14. 如何理解什么是放射?
  15. steam加速_Apex英雄Steam版锁60帧 GoLink免费加速器助力畅快_综合资讯
  16. html5粒子引擎 proton,质子引擎 Proton Engine
  17. 大数据基础课第一课 Hadoop详解
  18. Tushare学习文档(八 银行间同业拆放利率)
  19. vuex module总结
  20. systemc学习资料

热门文章

  1. 文件服务器php源码,php 在服务器上载文件
  2. JavaScript编程语言概述
  3. 【渝粤教育】国家开放大学2018年春季 3717-22T天然气管道长输技术 参考试题
  4. 【渝粤教育】国家开放大学2018年秋季 0008-21T简明现代汉语 参考试题
  5. [渝粤教育] 西南科技大学 公共管理学 在线考试复习资料
  6. 关于惠普hp服务器开机时F10菜单变成F10 Function Disabled的解决方法
  7. 修改CentOS 7默认语言为中文
  8. OC category(分类)
  9. 【踩坑】activiti工作流的svg-xml解析报错
  10. 区块链基础语言(二)——Go语言开发环境搭建