91 執行緒間通訊

2021-10-23 20:56:41 字數 1280 閱讀 6413

from queue import queue,priorityqueue,lifoqueue

# 執行緒間的通訊

# 執行緒間通訊,因為共享變數會出現資料不安全問題,用執行緒queue通訊,不需要加鎖,內部自帶queue是執行緒安全的

"""三種執行緒queue:

queue:佇列:先進先出

priorityqueue:優先順序佇列

lifoqueue:棧,後進先出

"""# queue:佇列:先進先出

q = queue(5)

q.put(

'egon'

)q.put(

'jack'

)q.put(

'calvin'

)q.put(

'gig'

)q.put(

'alex'

)# q.put_nowait('anna')

print

(q.get())

print

(q.get())

print

(q.get())

print

(q.get())

print

(q.get())

# q.get_nowait()

# lifoqueue:棧,後進先出

q1 = lifoqueue(5)

q1.put(

'egon'

)q1.put(

'jack'

)q1.put(

'calvin'

)q1.put(

'gig'

)q1.put(

'alex'

)print

(q1.get())

print

(q1.get())

print

(q1.get())

print

(q1.get())

print

(q1.get())

# priorityqueue:優先順序佇列 put時要放入元組

q2 = priorityqueue(3)

q2.put((10

,'金'))

q2.put((20

,'銀'))

q2.put(

(100

,'鐵'))

print

(q2.get())

print

(q2.get())

print

(q2.get(

))

執行緒間通訊

執行緒間通訊 多個執行緒在操作統一資源,但各個執行緒操作的動作不同。資源 class res class input implements runnable public void run else x x 1 2 class output implements runnable public vo...

執行緒間通訊

執行緒間的通訊 在乙個多執行緒的應用程式中,所有執行緒共享程序資源,協同工作。所以,執行緒之間的通訊是編寫多執行緒 應用的必不可少的環節。執行緒之間的通訊包括互斥 同步等,它是多 執行緒設計中最難控制的部分,也是關鍵部分。執行緒間的互斥 1 臨界區 在乙個多執行緒 的應用程式中,可能存在這樣的危險 ...

執行緒間通訊

執行緒間通訊 其實就是多個執行緒在操作同乙個資源 但是操作的動作不同。等待喚醒機制 wait notify 0 notifyall 都使用在同步中,因為要對持有監視器 鎖 的執行緒操作。所以要使用在同步中,因為只有同步才具有鎖 為什麼這些操作執行緒的方法要定義object類中呢?因為這些方法在操作同...