# 同步对象(Event)
import threading, time
class Boss(threading.Thread):
def run(self):
print('Boss:今晚大家都要加班到22:00')
print(event.isSet()) # False 没有设定标志位
event.set() # 设置了标志位,其它event.wait就可以跳过了
time.sleep(5)
print('Boss:<22:00>可以下班了')
print(event.isSet()) # False 这里被工人的线程清空了标志位
event.set() # 又设置了标志位,意味告诉工人可以下班了
class Worker(threading.Thread):
def run(self):
event.wait() # 等着,当老板event.set了,才可往下执行
print('Worker:命好苦')
time.sleep(1)
event.clear() # 清除标志位
event.wait() # 再等老板event.set
print('Worker:Ohyeah')
if __name__ == '__main__':
event = threading.Event() # 创建一个同步对象event,所有线程对象共享一个event
threads = [] # 创建一个线程空列表
for i in range(5): # 产生5个Worker类的线程并加入到threads列表中
threads.append(Worker())
threads.append(Boss()) # 产生一个Boss类的线程加入到threads列表中
for t in threads: # 运行threads列表中的线程,谁先运行是由cpu确定的,因此在Boss类中使用了event.set(),Worker类中只有event.wait()
t.start()
for t in threads: # hreads列表中的线程.join()
t.join()
print('end...')