推 flarehunter: 官方文件沒有保證notify會照wait的順序 07/21 18:48
※ 引述《sean72 (.)》之銘言:
: 標題: Re: [問題] blocking queue 實作
: 時間: Sat Jul 21 17:25:43 2018
:
: 謝謝幫忙review
:
:
: : 推 flarehunter: 在空的時候同時有2個get()和1個put()可能會壞掉 07/20 23:30
: : → flarehunter: 有兩個MyQueue物件也會壞掉 另外為什麼要繼承Thread? 07/20 23:31
:
: https://paste.ubuntu.com/p/Zjh3y6ychm/
: 抄了source code,改成這樣
:
: Consumer1先跑,取得了self.not_empty,並且因為que == 0
: 所以等在while loop裡 (wait())
:
: Consumer2接著跑,此時C2能取得self.not_empty lock嗎?
: 他是怎麼進入等待的?
:
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.89.32.145
: ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1532165146.A.897.html
: 推 flarehunter: wait會釋放lock 所以別人才能拿lock再notify 07/21 18:11
: → flarehunter: https://docs.python.org/2/library/threading.html 07/21 18:12
C1 先取得lock
C1 wait and release lock
C2 取得lock
C2 wait and release lock
P1 此時P1 notify ,這個notify會按照wait的順序,先給C1 ? 還是C1 C2任選?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.89.32.145
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1532168461.A.5AF.html