源码阅读 - Python Lib/queue.py
我们可以通过查看 python queue 模块的源代码知道它是怎么工作的。类 Queue
包含了几个线程相关的实例变量: 一把锁 (mutex),几个条件变量(是否为非空,是否为非满,是否处理完了),以及一个普通变量(剩余任务个数)。类 Queue
的关键操作都被套上锁,执行完操作后再解锁。写入任务到任务队列里时,需要申请 mutex,执行完后释放 mutex。mutex 操作可以确保写事务不会互相影响,而是线性写入。条件变量可以在适当的地方堵塞队列,再解除堵塞。