Re: [問題] thread-safe queue

作者: Yshuan (倚絃)   2019-04-26 12:20:16
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.
反之在que size已空, 2個getter先行並wait, 1個putter也有同樣結果.
作者: adrianshum (Alien)   2019-04-26 21:44:00
用notifyAll 應該就行吧?雖然稍欠效率就是了

Links booklink

Contact Us: admin [ a t ] ucptt.com