多线程-condition

https://www.cnblogs.com/yoyoketang/p/8337118.html

 

# coding=utf-8
import threading
import time

con = threading.Condition()

num = 0

# 生产者
class Producer(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        # 锁定线程
        global num
        with con:
            while True:
                print ("开始添加!!!")
                num += 1
                print ("火锅里面鱼丸个数:%s" % str(num))
                time.sleep(1)
                if num >= 5:
                    print ("火锅里面里面鱼丸数量已经到达5个,无法添加了!")
                    # 唤醒等待的线程
                    con.notify()  # 唤醒小伙伴开吃啦
                    # 等待通知
                    con.wait()
        # 释放锁


# 消费者
class Consumers(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):

        global num
        with con:
            while True:
                print ("开始吃啦!!!")
                num -= 1
                print ("火锅里面剩余鱼丸数量:%s" %str(num))
                time.sleep(2)
                if num <= 0:
                    print ("锅底没货了,赶紧加鱼丸吧!")
                    con.notify()  # 唤醒其它线程
                    # 等待通知
                    con.wait()


p = Producer()
c = Consumers()
p.start()
c.start()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值