Re: [問題] thread-safe queue
※ 引述《Yshuan (倚絃)》之銘言:
: que size已滿. 三個Thread.
: producer: Ta, Tb.
: consumer: T1.
: 0. producer都先啟動. 並且停在wait()
: 1. T1執行, 執行完後notify Ta.
: 2. Ta結束wait, 執行完後notify Tb
: 因為你的condition只有一個, 因此造成producer notify producer.
: 3. Tb結束wait. 執行並que overflow.
Tb結束wait之後,應該是執行 第二行的while loop檢查
檢查發現que full, 就接著執行第三行的wait(),繼續回去等待
你說的情況應該是第二行寫成if的情況才會發生吧?
1. with self.condition:
2. while len(self.que) == self.cap:
3. self.condition.wait()
thanks for helping me
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 76.169.162.97
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1556253608.A.932.html
※ 編輯: suhang (76.169.162.97), 04/26/2019 12:41:14
→
04/26 15:33,
6年前
, 1F
04/26 15:33, 1F
→
04/26 15:33,
6年前
, 2F
04/26 15:33, 2F
→
04/26 15:34,
6年前
, 3F
04/26 15:34, 3F
→
04/26 15:34,
6年前
, 4F
04/26 15:34, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章