併發編程-進~線程-05event事件

一丶什麼是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()
相關文章
相關標籤/搜索