AIU人工智能学院:数据科学、人工智能从业者的在线大学。
数据科学(Python/R/Julia)数据分析、机器学习、深度学习
小伙伴a,b,c围着吃火锅,当菜上齐了,请客的主人说:开吃!,于是小伙伴一起动筷子,这种场景如何实现
一、 Event(事件)
Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果Flag值为 False,那么当程序执行 event.wait方法时就会阻塞,如果Flag值为True,那么event.wait 方法时便不再阻塞。
Event其实就是一个简化版的 Condition。Event没有锁,无法使线程进入同步阻塞状态。
Event
- set: 将标志设为True,并通知所有处于等待阻塞状态的线程恢复运行状态。
- clear: 将标志设为False。
- wait(timeout): 如果标志为True将立即返回,否则阻塞线程至等待阻塞状态,等待其他线程调用set。
- isSet: 获取内置标志状态,返回True或False。
二、 Event案例1
场景:小伙伴a和b准备就绪,当收到通知event.set的时候,会执行a和b线程

运行结果:
Thread-1 已经启动
小伙伴 a 已经进入就餐状态!
Thread-2 已经启动
小伙伴 b 已经进入就餐状态!
主线程通知小伙伴开吃咯!
Thread-1 收到通知了.
小伙伴 a 开始吃咯!
Thread-2 收到通知了.
小伙伴 b 开始吃咯!
二、 Event案例2
场景:当小伙伴a,b,c集结完毕后,请客的人发话:开吃咯!

运行结果:
Thread-1 已经启动
小伙伴 a 已经进入就餐状态!
Thread-2 已经启动
小伙伴 b 已经进入就餐状态!
Thread-3 已经启动
小伙伴 c 已经进入就餐状态!
YOYO:集合完毕,人员到齐了,开吃咯!
Thread-1 收到通知了.
1516779534.13 小伙伴 a 开始吃咯!
Thread-3 收到通知了.Thread-2 收到通知了.
1516779534.13 小伙伴 c 开始吃咯!1516779534.13 小伙伴 b 开始吃咯!