python多线程threading.Condition用法:notify和wait

import threading

con = threading.Condition()


def job1():
    con.acquire()
    print("JOB1:床前明月光")
    con.notify()   # 唤醒正在等待(wait)的线程

    con.wait()   # 等待对方回应消息,使用wait阻塞线程,等待对方通过notify唤醒本线程
    print("JOB1:举头看明月")
    con.notify()  # 唤醒对方

    con.release()


def job2():
    con.acquire()

    con.wait()
    print("JOB2:疑似地上桑")
    con.notify()
    con.wait()
    print("JOB2:低头思故乡")
    con.notify()

    con.release()


def main():
    t1 = threading.Thread(target=job1)
    t2 = threading.Thread(target=job2)

    t2.start()   #此处注意顺序,先t2,否则双方都处于wait状态,程序卡死
    t1.start()

    t1.join()
    t2.join()


if __name__ == "__main__":
    main()

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值