'''生产者和消费者'''
'''
用python写一个多线程的生产者和消费者
生产者x x>0,有东西,print(不生产) x=0,没东西,print(生产) for循环
消费者x x=0,没东西,print(不消费) x>0,有东西,print(消费) for循环
分别封装成class
'''

import threading

class Producer(threading.Thread):
    def __init__(self,name):
        threading.Thread.__init__(self)
        self.name = name
    
    def run(self):
        global x
        
        tt.acquire()
        
        if x>0:
            #print("我已经生产完毕了,你随意去吧")
            tt.wait()
        else:
            for i in range(5):
                x=x+1
                print("%s在生产中,第%d个"%(self.name,x))#线程的名字
        tt.release()
    



class Consumer(threading.Thread):
    def __init__(self,name):
        threading.Thread.__init__(self)
        self.name = name
        
    def run(self):
        global x
        
        tt.acquire()
        
        if x==0:
            #print("没东西了")
            tt.wait()
        else:
            for i in range(5):
                x=x-1
                print("%s在消费中,第%d个"%(self.name,x+1))
        tt.release()

x = 0

#tt = threading.Lock()
tt = threading.Condition()

p = Producer("producer")


c = Consumer("consumer")


p.start()
c.start()

p.join()
c.join()

更多相关文章

  1. 生产者-消费者问题
  2. 线程同步-生产者消费者问题
  3. 嵌入式Linux要学哪些东西?你真的造吗?
  4. Linux内核中实现生产者与消费者(避免无效唤醒)
  5. Linux源码包里有个scripts文件夹,里面放的东西起什么作用?
  6. 今天看了一整天的汇编语言,真发现语言这东西只是一种思想!
  7. java并发包学习系列:生产者消费者模式
  8. fragment 状态保存时怎么执行一些需要在onResume、onPause方法里
  9. jswdk/jsdk/jdk到底分别是什么东西

随机推荐

  1. 显示滑动新闻点击的问题
  2. Yii2之发送电子邮件
  3. mac下安装多版本PHP及切换
  4. 在ajax中接收php多维数组。
  5. 使用Python中的POST将数据发送到PHP
  6. PHP按照 年、月、日创建递归目录
  7. PHP的语言特性-面向对象和C++/java/pytho
  8. 刷新php页面而不重载内容?
  9. 在php中,从字符串中删除逗号后的所有内容
  10. php,检查文本拆分的正确性