Python 的线程安全Queue
Queue.full()
对象有一个用以下文档命名的有用函数:
如果队列已满,则返回 True,否则返回 False。如果 full() 返回 True,则不能保证对 get() 的后续调用不会阻塞。同样,如果 full() 返回 False,则不能保证后续调用 put() 不会阻塞。
很明显,在put()
队列中有多个线程项和多个线程get()
项的多线程场景中,存在竞争条件。但是,如果只有一个线程使用put()
,而一个不同的线程使用get()
的值不能full()
被信任?
这是一个特定于 Python 实现的问题吗?如果是这样,CPython 的答案是什么?