一个伙夫蒸馒头(生产者,售票),要求蒸够10个,等待,并唤醒吃馒头的人
三个吃货吃馒头(消费者,买票),要求同时吃,当任何一个人发现没馒头了,唤醒伙夫。
生产者是一堆线程,消费者是另一堆线程,内存缓冲区可以使用List数组队列,数据类型只需要定义一个简单的类就好。关键是如何处理多线程之间的协作。这其实也是多线程通信的一个范例。
    在这个模型中,最关键就是内存缓冲区为空的时候消费者必须等待,而内存缓冲区满的时候,生产者必须等待。其他时候可以是个动态平衡。值得注意的是多线程对临界区资源的操作时候必须保证在读写中只能存在一个线程,所以需要设计锁的策略。

import threading
import time
lock1=threading.Lock()
lock2=threading.Lock()
s1=threading.Condition(lock=lock1) # 生产锁
s2=threading.Condition(lock=lock2)  #吃的锁list=[]
mt=None
class HuoFu(t

使用python编写三个吃货吃馒头与一个伙夫生产馒头(线程与锁)相关推荐

  1. 生产者(厨师做面条)消费者(吃货吃面条)模式synchronized 法和Lock+Condition法(不使用集合),代码详解

    1. synchronized + wait + notifyAll synchronized:包裹着同步代码块,代码块执行完释放锁 wait:线程挂起,失去锁 notifyAll:唤醒同个对象的wa ...

  2. python编写函数 avg(lst),参数 lst 是一个列表。函数可以返回 lst 的整数平均值,调用 avg(lst) 函数求每个学生的平均成绩。

    python编写函数 avg(lst),参数 lst 是一个列表.函数可以返回 lst 的整数平均值,调用 avg(lst) 函数求每个学生的平均成绩. 已知成绩列表 s={'小李':[77,54], ...

  3. (Python)编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1。

    [问题描述] 编写一程序,从键盘输入输入一个三位正整数,然后反向输出对应的数,如果输入的数不是三位正整数,则输出-1. [输入形式] 从键盘输入三位的正整数. [输出形式] 输出交换后的正整数值. [ ...

  4. 怎么用python编写个apk_新手用tkinter写了一个APK提取工具

    [Python] 纯文本查看 复制代码""" @author:qh @datetime:2019-3-15 @mood:<(* ̄▽ ̄*)/ "" ...

  5. 如何利用python画三棱锥_blender插件DEMO,添加一个三菱锥

    1.[文件] 插件 ~ 3KB 下载(17) bl_info = { "name" : "Tetrahedron Object", "author&q ...

  6. 一年吃进2万亿,中国吃货如何养活三只松鼠、良品铺子、百草味们?

    三只松鼠屡经波折,终于获批在A股上市也算得偿所愿:良品铺子不甘人后早,在上市的路上而一路狂奔:百草味全面开启"全渠道.全品类.全人群"的发展战略,布局新零售和爆品战略,进击新模式. ...

  7. 团队-吃货之家-项目总结

    中团队名称:BUG组 成员:王志昂(组长) 郑 月 李古宇 孙晨旭 鞠牧孜 程冠菲 项目名称:吃货之家-识食物者为俊杰 我们所做这个网站呢 主要由以下几个模块:吃货日记.吃货资讯.食之历史.吃货菜谱吃 ...

  8. python漂亮界面 数独游戏源代码_使用Python编写数独游戏自动出题程序

    原标题:使用Python编写数独游戏自动出题程序 数独是一个很好玩的游戏,可以锻炼推理能力.下面的代码可以自动生成数独游戏题目. fromrandom importshuffle, randrange ...

  9. python编写hello world_python编写helloworld

    LINUX 下 python 程序的运行当你学习一种新的编程语言的时候,你编写运行的第一个程序通常都是"Hello World"程序,这已经成为一种传统了.在你运行"He ...

最新文章

  1. opencv 白平衡
  2. DIV+CSS专题:十天学会DIV+CSS
  3. c#操作excel后关闭excel.exe的方法
  4. python学习-38迭代器和生成器
  5. LeetCode算法入门- Add Two Numbers-day3
  6. python全栈开发笔记---------数据类型-----集合set
  7. python中的mul函数_Sympy:“Mul”对象没有分层函数的“cos”属性
  8. .net core sorteddictionary 排序_#键盘排序——为什么我们的键盘字母不是按照ABCD的顺序排列?...
  9. CodeForces 173B Chamber of Secrets(最短路)
  10. [LeetCode]题解(python):016-3Sum Closest
  11. 【安全牛学习笔记】SSL、TLS拒绝服务***和补充概念
  12. PHP中preg_match_all正则匹配出需要的内容
  13. ArcGIS学习总结(12)——拓扑检查和修正
  14. 怎样训练左右手协调_吉他,左右手的协调,练习的方法原来这么简单!
  15. win7设置背景色保护视力
  16. 【Python表白代码】“情话都是我抄来的,想说给你听是真的。”情人节快乐~
  17. QSV格式转换MP4应该使用哪个视频格式转换器
  18. ios浏览器微信支付回调页面_iOS微信支付结果页面返回原程序按钮
  19. 关于AI芯片功耗和应用的一些看法
  20. eclipse插件升级

热门文章

  1. android 动态生成tablelayout,动态tablelayout创建的android应用程序崩溃
  2. 全球10大顶级开源ERP系统
  3. 五大常用办公软件-office办公软件
  4. PHP+mysql民用无人机实名登记系统-计算机毕业设计源码24602
  5. 使用ccproxy和fiddler做手机代理
  6. 微信怎么批量删除好友?
  7. Spring MVC Controler层获取errors验证信息 同时返回
  8. Passive Event Listeners
  9. 计算机网络实验: 使用Wireshark抓包工具进行网络层和链路层网络协议分析(IP部分)
  10. Python使用MSS截屏