執行緒間通訊推薦用佇列

2022-06-22 22:42:12 字數 803 閱讀 5015

#

佇列是資料安全的,意思是自帶鎖,多執行緒間通訊時,使用佇列是好的,不會出現同乙個資料被多個執行緒搶占,使用其他資料型別進行通訊則需要自己實現鎖功能

import

queue

#普通先進先出佇列

#q = queue.queue() # 沒有引數則表示佇列沒有指定深度

#q.put(1) # 如果佇列指定了深度則到了深度後,會阻塞在這裡等待佇列有空間後再向佇列中放入資料

#q.put_nowait() # 佇列滿了也不會阻塞在這裡,但會有異常

#q.get() # 從佇列中獲取資料,無資料後悔阻塞

#q.get_nowait() # 從佇列中獲取資料,佇列空時也不會阻塞,會報異常

#先進後出佇列,棧

#q = queue.lifoqueue() # 建立先進後出佇列,就是棧

#q.put(1)

#q.get()

#優先順序佇列

q = queue.priorityqueue() #

優先順序佇列

q.put((20, '

a')) #

20表示優先順序,值越小,優先順序越高,越先被get獲取到。第二個引數為值

q.put((10, 'ee'

))q.put((10,'

c')) #

同樣等級優先順序的,則按照值的ascii碼優先順序,同優先順序下,值的ascii碼優先順序越高的,越先被get到

q.put((30, 'cb'

))print(q.get()) #

(10, 'c')

執行緒間通訊

執行緒間通訊 多個執行緒在操作統一資源,但各個執行緒操作的動作不同。資源 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類中呢?因為這些方法在操作同...