请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

队列设置最大长度后,整个程序被阻塞

ParseTopicDetailThread如果有下一页数据再put进topic_queue时整个程序被阻塞。
应该是此时ParseTopicListThread向topic_queueput了数据导致队列已满,
然后两个线程都在向topic_queue中put时被阻塞住了,
感觉类似于死锁,
请问老师有什么好的解决方案吗?

正在回答 回答被采纳积分+3

1回答

bobby 2020-12-07 17:54:32

如果是队列的话 这里不应该出现死锁,比如你现在列表页解析过快,很快将队列放满,这个时候消费者消费不过来,那么这个时候生产者阻塞等待消费者消费之后才能放入,这个地方是消费者和生产者之间的关系,两者之间又不会竞争同一把锁,为什么会死锁?

0 回复 有任何疑惑可以回复我~
  • 同样问题,会出现死锁,卡在lock.aquire()
    回复 有任何疑惑可以回复我~ 2021-04-18 19:23:57
  • 我这边即使没有设置队列长度,也会卡住,log信息如下:
    Exception ignored in: <module 'threading' from '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/threading.py'>
    Traceback (most recent call last):
      File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/threading.py", line 1388, in _shutdown
        lock.acquire()
    回复 有任何疑惑可以回复我~ 2021-04-18 19:31:07
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信