summaryrefslogtreecommitdiffstats
path: root/Lib/queue.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/queue.py')
-rw-r--r--Lib/queue.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/Lib/queue.py b/Lib/queue.py
index 387ce54..25beb46 100644
--- a/Lib/queue.py
+++ b/Lib/queue.py
@@ -239,8 +239,9 @@ class Queue:
By default, gets will only raise once the queue is empty. Set
'immediate' to True to make gets raise immediately instead.
- All blocked callers of put() will be unblocked, and also get()
- and join() if 'immediate'.
+ All blocked callers of put() and get() will be unblocked. If
+ 'immediate', a task is marked as done for each item remaining in
+ the queue, which may unblock callers of join().
'''
with self.mutex:
self.is_shutdown = True
@@ -249,9 +250,10 @@ class Queue:
self._get()
if self.unfinished_tasks > 0:
self.unfinished_tasks -= 1
- self.not_empty.notify_all()
# release all blocked threads in `join()`
self.all_tasks_done.notify_all()
+ # All getters need to re-check queue-empty to raise ShutDown
+ self.not_empty.notify_all()
self.not_full.notify_all()
# Override these methods to implement other queue organizations