首頁  >  文章  >  後端開發  >  Python線程下信號量與有邊界的信號量的介紹

Python線程下信號量與有邊界的信號量的介紹

不言
不言原創
2018-09-11 16:28:05979瀏覽

本篇文章帶給大家的內容是關於Python線程下信號量與有邊界的信號量的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

信號量與有邊界的信號量

信號量是一個基於計數器的同步原語,每次調用acquire()方法時,此計數器減1,每次調用release( )方法時此計數器加1.。如果計數器為0,acquire()方法將會阻塞,直到有其他執行緒呼叫release()方法為止。

信號量

語法:
s=Semqphore(value)

建立一個新的信號量。 value是計數器的初始值。如果省略value,將預設設為1

常用方法:

s.acquire(blocking):取得信號量。如果內部計數器大於0,此方法將把它的值減1。
然後立即返回。如果它的值為0,此方法將阻塞,直到另一個執行緒呼叫release()方法為止。
blocking參數的行為與Lock和RLock物件中所描述的相同。

s.release():透過將內部計數器的值加1來釋放一個訊號量。
如果計數器為0,而且另一個執行緒正在等待,該執行緒講被喚醒。
如果有多個執行緒正在等待,只能從它的acquire()的呼叫中傳回一個,且順序不確定。

有邊界的信號量

語法:
bs=BoundedSemaphore(value)

建立一個新的有邊界訊號量。 value是計數器的初始值,如果忽略,將預設為1.

信號量與有邊界的信號量的區別

BoundedSemaphore的工作方式與Semaphore完全相同,但release()操作的次數不能超過acquire()的操作次數。

信號量與互斥鎖的微妙差異

信號量可用來發送訊號。例如,可以從不同線程呼叫acquire()和release()方法,以便在生產者和消費者線程之間進行通訊。

相關建議:

關於Python3.X執行緒中信號量的使用詳解

python Semaphore(訊號量)是什麼? (實例詳解)

以上是Python線程下信號量與有邊界的信號量的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn