线程事件--day36

"""
----线程事件----

是用于协调多个线程工作的,当一个线程要执行某个操作,需要获取另一个线程的状态
你要给别人打电话 必须明确知道对方手机买好了
作为客户端 要连接服务器 必须明确服务器已经启动了,那么作为启动服务器的一方 如何告知客户端?
就通过事件
"""

import time
from threading import Thread
from threading import Event

# 用Event创建一个事件
e = Event()  # 默认False

def start():
    print("正在启动服务器......")
    time.sleep(5)
    print("服务器启动成功!")
    e.set()  # 就是把事件的值设置为True

def connect():
    # 重试3次
    for i in range(3):
        print("等待服务器启动....")
        # 设置等待时间
        e.wait(2)  # 会阻塞 直到对方把事件设置为True
        # 判断Event 是否可以执行
        if e.isSet():
            print("连接成功!")
            break
        else:
            print("连接失败")
    else:  # 如果3次都没成功 就打印这个消息
        print("服务器没有启动")

Thread(target=start).start()
Thread(target=connect).start()

 

posted @ 2019-01-04 17:30  WenChen-0o0  阅读(115)  评论(0编辑  收藏  举报