这里为什么还是会无限挂起?

来源:11-4 线程同步 - Lock、RLock

石佛啊石佛

2018-04-12

http://img.mukewang.com/szimg/5acf504e0001b02309040534.jpg

老师你好。为什么这段程序会无限挂起?

另外,如果我把消费者设置为Daemon时候,会出现生产者生产完的瞬间就结束的问题,导致最后的产品没有被消费掉。更复杂时,如果在这个过程中消费者时快时慢,也就是说我们无法通过队列为空来判断任务是否完全结束的话,我们应该如何设计代码,保证所有产品被生产且被消费完?

写回答

2回答

bobby

2018-04-16

首先setDeamon会在主线程结束后kill所有子线程,如果你的问题你可以按照两种设计理念, 第一 子线程一直处于监听和处理状态也就是永久运行状态,这个时候如果没有数据就会一直等待, 第二种就是设计一个结束标记为比如总量,一个信号,但是这个如果是信号的话,这个信号由什么线程标记 以及什么时候去标记这个需要你自己根据具体的需求来确定

0
0

石佛啊石佛

提问者

2018-04-12

是因为线程默认为join()?

0
0

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程