"""
事件 911 刘强东事件 火烧圆明园
事件是一个通知信息, 表示什么时间发生了什么事情
用于线程间通讯
线程间 本来就是数据共享的 也就是说 即使没有事件这个东西 也是没问题的
线程之间,执行流程是完全独立的,一些时候可能需要知道另一个线程发生了什么 然后采取一些行动
这时候就可以使用事件来简化代码
事件其实就是帮你维护了一个bool值
在bool为True之前 wait函数将一直阻塞,这样一来就避免了不断的询问对方的状态
假设 有两条线程 一个用于开启服务器 一个用于连接服务器
连接服务器一定要保证 服务器已经启动成功了,服务器启动需要花费一些时间,
"""
import time,random
from threading import Thread,Event
# 使用事件
# 一个事件
boot = Event()
def boot_server():
print("正在启动服务器.......")
time.sleep(random.randint(2,5))
print("服务器启动成功.......")
boot.set()
def connect_server():
print("开始尝试连接.....")
boot.wait() # 是一个阻塞函数 会一直等到set()函数被调用
print("连接服务器成功!")
t1 = Thread(target=boot_server)
t1.start()
t2 = Thread(target=connect_server)
t2.start()
# 不使用事件
# 默认未启动
# is_boot = False
#
# def boot_server():
# global is_boot
# print("正在启动服务器.......")
# time.sleep(random.randint(2,5))
# print("服务器启动成功.......")
# # 修改状态为True
# is_boot = True
#
#
# def connect_server():
# while True:
# if is_boot:
# print("连接服务器成功!")
# break
# else:
# print("连接失败 服务器未启动....")
# time.sleep(1)
#
# t1 = Thread(target=boot_server)
# t1.start()
#
# t2 = Thread(target=connect_server)
# t2.start()
#