我是靠谱客的博主 外向戒指,这篇文章主要介绍线程——吃饭与做饭,现在分享给大家,希望可以做个参考。

一人做馒头,30个后三人吃,吃完三人其中一个通知继续做饭,如此循环

import threading
import time
import random
class Huofu(threading.Thread):
     def __init__(self,name=None):
         threading.Thread.__init__(self)
         self.name = name
     def run(self):
         while True:
            cond.acquire()#给吃饭的上锁
            for i in range(1,31):
               guo.append(i)
               print('做出第{0}个馒头'.format(i))
               time.sleep(1)
            cond.notify_all()#唤醒吃饭的锁
            cond.release()
            cond2.acquire()#给做饭的上锁
            cond2.wait()#等待,当被唤醒.notify()时才会执行下面的释放.release()
            cond2.release()#释放

class Chihuo(threading.Thread):
     def __init__(self,name=None):
         threading.Thread.__init__(self)
         self.name = name
     def run(self):
         while True:
             mantou=None
             cond.acquire()
             if len(guo)==0:
               cond2.acquire()
               cond2.notify()
               cond2.release()
               cond.wait()
             else:
               mantou=guo.pop()
             cond.release()
             if mantou is not None:
               print('{0}正在吃{1}'.format(self.name,mantou))
               time.sleep(random.randint(1,5))

guo = []
lock = threading.Lock()
cond = threading.Condition(lock=lock)#吃的锁
lock2 = threading.Lock()
cond2 = threading.Condition(lock=lock2)#蒸馒头的锁
Huofu(name='做饭的').start()
Chihuo(name='吃饭的1').start()
Chihuo(name='吃饭的2').start()
Chihuo(name='吃饭的3').start()

最后

以上就是外向戒指最近收集整理的关于线程——吃饭与做饭的全部内容,更多相关线程——吃饭与做饭内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(100)

评论列表共有 0 条评论

立即
投稿
返回
顶部