本篇文章帶給大家的內容是關於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()方法,以便在生產者和消費者線程之間進行通訊。
相關建議:
python Semaphore(訊號量)是什麼? (實例詳解)
以上是Python線程下信號量與有邊界的信號量的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!