Document the suggested alternative to emtpy() and full().

This commit is contained in:
Raymond Hettinger 2009-03-06 23:55:28 +00:00
parent 66913e2213
commit 611eaf0e66

View File

@ -91,14 +91,31 @@ class Queue:
return n
def empty(self):
"""Return True if the queue is empty, False otherwise (not reliable!)."""
"""Return True if the queue is empty, False otherwise (not reliable!).
This method is likely to be removed at some point. Use qsize() == 0
as a direct substitute, but be aware that either approach risks a race
condition where a queue can grow before the result of empty() or
qsize() can be used.
To create code that needs to wait for all queued tasks to be
completed, the preferred technique is to use the join() method.
"""
self.mutex.acquire()
n = not self._qsize()
self.mutex.release()
return n
def full(self):
"""Return True if the queue is full, False otherwise (not reliable!)."""
"""Return True if the queue is full, False otherwise (not reliable!).
This method is likely to be removed at some point. Use qsize() == n
as a direct substitute, but be aware that either approach risks a race
condition where a queue can shrink before the result of full() or
qsize() can be used.
"""
self.mutex.acquire()
n = 0 < self.maxsize == self._qsize()
self.mutex.release()