并发编程-线程-17线程和进程的event事件

一丶什么是event事件

经过判断某个线程的状态来肯定本身下一步的操做python

​ 若是有线程等待一个Event对象, 而这个Event对象的标志为假,那么这个线程将会被一直阻塞直至该标志为真。一个线程若是将一个Event对象的信号标志设置为真,它将唤醒全部等待这个Event对象的线程。若是一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件, 继续执行操作系统

二丶event事件方法

  1. event.isSet():返回event的状态值;线程

  2. event.wait():若是 event.isSet()==False将阻塞线程;code

  3. event.set(): 设置event的状态值为True,全部阻塞池的线程激活进入就绪状态, 等待操做系统调度;对象

  4. event.clear():恢复event的状态值为False。事件

三丶event事件的代码

from threading import Event,Thread
import time

# 先生成一个event对象
e = Event()


def light():
    print('红灯正亮着')
    time.sleep(3)
    e.set()  # 发信号
    print(e.isSet())
    # e.clear()
    # print(e.isSet())
    print('绿灯亮了')
    # print(e.set())

def car(name):
    print('%s正在等红灯'%name)
    e.wait()  # 等待信号
    # print(e.isSet())
    e.clear()
    print(e.isSet())
    print('%s加油门飙车了'%name)


t = Thread(target=light)
t.start()

for i in range(10):
    t = Thread(target=car,args=('伞兵%s'%i,))
    t.start()
相关文章
相关标签/搜索