天天看點

練習生産者與消費者-PYTHON多線程中的條件變量同步-Queue

以前練習過,但好久不用,手生,概念也生了,

重溫一下。。

URL:

http://www.cnblogs.com/holbrook/tag/%E5%A4%9A%E7%BA%BF%E7%A8%8B/

~~~~~~~

可以認為Condition對象維護了一個鎖(Lock/RLock)和一個waiting池。線程通過acquire獲得Condition對象,當調用wait方法時,線程會釋放Condition内部的鎖并進入blocked狀态,同時在waiting池中記錄這個線程。當調用notify方法時,Condition對象會從waiting池中挑選一個線程,通知其調用acquire方法嘗試取到鎖。

Condition對象的構造函數可以接受一個Lock/RLock對象作為參數,如果沒有指定,則Condition對象會在内部自行建立一個RLock。

除了notify方法外,Condition對象還提供了notifyAll方法,可以通知waiting池中的所有線程嘗試acquire内部鎖。由于上述機制,處于waiting狀态的線程隻能通過notify方法喚醒,是以notifyAll的作用在于防止有線程永遠處于沉默狀态。

~~~~~~~~~~~~~~

練習生産者與消費者-PYTHON多線程中的條件變量同步-Queue

  

練習生産者與消費者-PYTHON多線程中的條件變量同步-Queue