作者:轩易污
链接:https://www.nowcoder.com/discuss/405756
来源:牛客网pthread_cond_t empty = PTHREAD_COND_INITIALIZER;
pthread_cond_t full = PTHREAD_COND_INITIALIZER;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;int max_size = 10;
queue<int> q;int get(){pthread_mutex_lock(&mutex);while(q.empty()) pthread_cond_wait(&empty, &mutex);int value = q.front();q.pop();pthread_cond_signal(&full);pthread_mutex_unlock(&mutex);return value;
}void push(int value){pthread_mutex_lock(&mutex);while(q.size() == max_size) pthread_cond_wait(&full, &mutex);q.push(value);pthread_cond_signal(&empty);pthread_mutex_unlock(&mutex);
}

工作流程:

https://blog.csdn.net/m0_37313888/article/details/105150567

百度面试题:生产者 消费者问题相关推荐

  1. java 面试题 生产者 消费者_面试大厂必看!就凭借这份Java多线程和并发面试题,我拿到了字节和美团的offer!...

    最近好多粉丝私信我说在最近的面试中老是被问到多线程和高并发的问题,又对这一块不是很了解,很简单就被面试官给问倒了,被问倒的后果当然就是被刷下去了,因为粉丝要求,我最近也是花了两天时间 给大家整理了这一 ...

  2. 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来

    题目要求: 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来.(这是一道百度面试的算 ...

  3. 【Java】线程通信的例子:用两个线程打印 1-100;生产者消费者问题

    wait()和sleep()的区别 面试题:sleep() 和 wait()的异同? 相同点:一旦执行方法,都可以使得当前的线程进入阻塞状态. 不同点: 1)两个方法声明的位置不同:Thread类中声 ...

  4. 线程面试:生产者 消费者问题

            更多面试题请狠狠的点击 下载        生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品 ...

  5. 生产者-消费者模型的两种实现方式

    https://www.cnblogs.com/caolicangzhu/p/7086176.html 本文主要来总结生产者-消费者模型的代码实现,至于其原理,请大家自行百度. 一.基于链表的生产-消 ...

  6. JAVA线程之生产者消费者问题

    复习下JAVA线程基础知识: 1.线程的状态: 创建状态:创建了线程对象,此时线程有了相应的内存空间和其他资源,但处于不可运行状态. 就绪状态:线程对象调用start()方法启动线程,进入就绪状态,此 ...

  7. java 生产者消费者_Java多线程:线程间通信—生产者消费者模型

    一.背景 && 定义 多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步. 另一个问题是, 多个线程之间如何协作呢 ? 我们看一个 ...

  8. java consumed_Java设计模式—生产者消费者模式(阻塞队列实现)

    生产者消费者模式是并发.多线程编程中经典的 真实世界中的生产者消费者模式 生产者和消费者模式在生活当中随处可见,它描述的是协调与协作的关系.比如一个人正在准备食物(生产者),而另一个人正在吃(消费者) ...

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

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

  10. 百度笔试题面试题集总

    1:堆和栈的区别,什么时候用堆什么时候用栈? 2:树的深度优先搜索算法 按照某种条件往前试探搜索,如果前进中遭到失败(正如老鼠钻迷宫老鼠遇到死胡同)则退 回头另选通路继续搜索,直到找到条件的目标为止. ...

最新文章

  1. java中Array和ArrayList区别
  2. Python集成网络诊断小工具(含有ping,tracert,tcping等小工具)
  3. oracle 查看表所占用的空间大小
  4. nignx的TCP和UDP调度(nginx反向代理)
  5. python根据矩阵数值大小涂上不同深浅颜色
  6. mysql命令导出方法_MySql使用mysqldump 导入与导出方法总结
  7. 软件测试:Jmeter关联详解
  8. 基于Javaee的影视创作论坛的设计与实现(含源文件)
  9. Spring Boot 菜鸟教程 2 Data JPA
  10. Java初学者作业——定义客户类(Customer),客户类的属性包括:姓名、年龄、电话、余额、账号和密码;方法包括:付款。
  11. chrome浏览器主页变成hao123
  12. 知云文献翻译打不开_最新版知云文献翻译 | 内附软件安装包
  13. 【epoll函数】epoll_create、epoll_ctl、epoll_wait
  14. AltiumDesigner中plane和layer区别
  15. 使用MemoryStream类读写内存
  16. SAR学习笔记后续-phased工具箱介绍
  17. runtime.js
  18. Python高级编程-如何将多个小字符串拼接成一个大的字符串?
  19. 早上睡醒后,程序员如何快速清醒头脑?
  20. 2020-03-24打卡——Task2:数据的探索性分析(EDA)

热门文章

  1. [转]Erlang 大量写入出警报
  2. 因热爱而编码,创造至美生活,挑战高效工作 阿里云智能开发者创新应用大赛全记录...
  3. Android之解析XML
  4. vagrant mac的一些坑
  5. Shell中的Wget 的用法
  6. Java使用Jdbc操作MySql数据库(一)
  7. 批处理技巧:循环固定目录的子目录,然后向每个子目录拷贝文件
  8. httpd中工作模型的比较
  9. SNMP在企业网中应用
  10. eAccelerator(eacc)安装配置笔记