zoukankan      html  css  js  c++  java
  • day51-线程-条件

    #条件:Condition、notify通知、notify_all、wait
    #条件 = 递归锁 + wait功能
    #条件可以让主线程控制多少个子线程可以执行。
    import threading
    def play(con,i):
        con.acquire()  #所有人都拿到了钥匙
        con.wait()     #排队玩游戏,等待工作人员放行,收到notify发过来的信号之后就不再阻塞。
        print('游客%s可以玩游戏了'%i)
        con.release()
    
    con = threading.Condition() #条件对象
    for i in range(10):         #有十个游客
        t = threading.Thread(target=play,args=(con,i))
        t.start()
    
    while True:
        inp = input('放行人数:') #工作人员每次可以放行多少个人
        if inp == 'q':break
        con.acquire()            #工作人员拿到钥匙
        con.notify(int(inp))     #发出通知信号:通知放行多少个人,notify后面必须跟int类型。
        con.release()
    
    #notify_all:放行所有线程
    # while True:
    #     inp = input('放行人数:')
    #     if inp == 'q':break
    #     con.acquire()
    #     if inp == 'all':
    #         con.notify_all() #放行所有人
    #     else:
    #         con.notify(int(inp))
    #     con.release()
  • 相关阅读:
    穷举
    菱形
    6.824 Lab 3: Fault-tolerant Key/Value Service 3A
    6.824 Lab 2: Raft 2C
    6.824 Lab 2: Raft 2B
    一文学会Rust?
    字符串相似度匹配
    解决gson解析long自动转为科学计数的问题
    commonJs requirejs amd 之间的关系
    关于package.json的理解
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/12142806.html
Copyright © 2011-2022 走看看