執行緒間使用全域性變數進行通訊。
同步互斥:
首先分為同步和互斥兩個部分;
同步:這一一種協作關係,為了完成默寫任務,操作,多程序或者執行緒間形成的一種協調,萬兆有序的步驟執行操作。
互斥:當全域性變數被乙個執行緒使用的時候,其他的執行緒不能對該資料進行操作,必須要等到資源被釋放後才能拿來使用。
執行緒同步互斥方法:
內容執行緒event
執行緒lock
使用模組
from threading improt event
from threading import lock
建立物件
e=event()
lock=lock()
設定阻塞
e.wait([timeout])阻塞等待
lock.acquire()上鎖
設定解除阻塞
e.set()解除阻塞
lock.release()解鎖
使用方法
e.clear()使e回到未被設定狀態
with lock:… with**結束自動解鎖
**演示:
event:
"""
event 執行緒互斥方法演示
"""from threading import thread,event
s =none
e = event(
)def 楊子榮():
print
("楊子榮前來拜山頭"
)global s
s ="天王蓋地虎"
e.set(
)t = thread(target = 楊子榮)
t.start(
)print
("說對口令就是自己人"
)e.wait(
)# 等待e被set
if s ==
'天王蓋地虎'
:print
("寶塔鎮河妖"
)print
("確認過眼神,你是對的人"
)else
:print
("打死他!"
)t.join(
)
lock:
"""
thread_lock.py
執行緒鎖演示
"""from threading import thread,lock
a = b =
0lock = lock(
)def
value()
:while
true
: lock.acquire(
)# 上鎖
if a != b:
print
("a = %d,b = %d"
%(a,b)
) lock.release(
)# 解鎖
t = thread(target = value)
t.start(
)while
true
:with lock:
# 上鎖
a +=
1 b +=
1# 解鎖
t.join(
)
執行緒間的通訊 同步方式與程序間通訊方式
1 執行緒間的通訊方式 2 執行緒間的同步方式 各個執行緒可以訪問程序中的公共變數,資源,所以使用多執行緒的過程中需要注意的問題是如何防止兩個或兩個以上的執行緒同時訪問同乙個資料,以免破壞資料的完整性。資料之間的相互制約包括 1 直接制約關係,即乙個執行緒的處理結果,為另乙個執行緒的輸入,因此執行緒...
執行緒間的通訊 同步方式與程序間通訊方式
1 執行緒間的通訊方式 1 定義訊息 define wm thread sendmsg wm user 20 2 新增訊息函式宣告afx msg int ontsendmsg 3 新增訊息對映on message wm thread sendmsg,ontsm 4 新增ontsm 的實現函式 使用事...
執行緒間的通訊 同步方式與程序間通訊方式
1 定義訊息 define wm thread sendmsg wm user 20 2 新增訊息函式宣告afx msg int ontsendmsg 3 新增訊息對映on message wm thread sendmsg,ontsm 4 新增ontsm 的實現函式 event物件有兩種狀態 有訊...