We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent d14adb7 commit d76d075Copy full SHA for d76d075
v3/primitives/queue.py
@@ -31,8 +31,9 @@ def _get(self):
31
return self._queue.pop(0)
32
33
async def get(self): # Usage: item = await queue.get()
34
- if self.empty():
35
- # Queue is empty, put the calling Task on the waiting queue
+ while self.empty(): # May be multiple tasks waiting on get()
+ # Queue is empty, suspend task until a put occurs
36
+ # 1st of N tasks gets, the rest loop again
37
self._evput.clear()
38
await self._evput.wait()
39
return self._get()
@@ -48,7 +49,7 @@ def _put(self, val):
48
49
self._queue.append(val)
50
51
async def put(self, val): # Usage: await queue.put(item)
- if self.full():
52
+ while self.full():
53
# Queue full
54
self._evget.clear()
55
await self._evget.wait()
0 commit comments