从队列取出元素
来源:8-3 实现线程安全的队列Queue

Umud
2020-07-14
在蓝色框里已经判断在queue里没有元素时返回 None,不明白为什么在黄色框里再次判断返回None?
写回答
1回答
-
因为在wait之后,队列中有可能已经被别的线程push了元素(被唤醒),也有可能被唤醒以后,又被别的阻塞在pop这里的线程取走了,所以要保证size不为空的情况下,才能进行queue.pop()操作。
对于这里的思考,应该结合多个线程的场景去判断,考虑其他线程会处于怎么样的一个状态,只线性思维去思考的话,很多情况下,并发的问题就会想不明白,建议可以多实战下,努力模拟并发的场景。
希望对你有所帮助。
012020-07-15
相似问题