Re: [問題] blocking queue 實作

作者: sean72 (.)   2018-07-21 17:25:43
謝謝幫忙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嗎?
他是怎麼進入等待的?
作者: flarehunter (Range)   2018-07-21 18:11:00
wait會釋放lock 所以別人才能拿lock再notifyhttps://docs.python.org/2/library/threading.html
作者: cutekid (可愛小孩子)   2018-07-21 19:59:00
好奇原來的code在empty時,遇到兩個get一個put為什麼會壞
作者: flarehunter (Range)   2018-07-21 21:19:00
因為他用if不是while
作者: cutekid (可愛小孩子)   2018-07-22 08:54:00
嗯,我用if的狀況去分析,還是看不出會出問題sean72大大,你有看出問題嗎瞭解了,謝謝 s 大還有 f 大

Links booklink

Contact Us: admin [ a t ] ucptt.com