From 3531d9044dbfd15b3bf5ec1abe5b9744fce37464 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 9 Jan 2015 01:42:52 +0100 Subject: asyncio: sync with Tulip * Document why set_result() calls are safe * Cleanup gather(). Use public methods instead of hacks to consume the exception of a future. * sock_connect(): pass directly the fd to _sock_connect_done instead of the socket. --- Lib/asyncio/queues.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Lib/asyncio/queues.py') diff --git a/Lib/asyncio/queues.py b/Lib/asyncio/queues.py index 8f6c257701..dce0d53c70 100644 --- a/Lib/asyncio/queues.py +++ b/Lib/asyncio/queues.py @@ -126,6 +126,8 @@ class Queue: # Use _put and _get instead of passing item straight to getter, in # case a subclass has logic that must run (e.g. JoinableQueue). self._put(item) + + # getter cannot be cancelled, we just removed done getters getter.set_result(self._get()) elif self._maxsize > 0 and self._maxsize <= self.qsize(): @@ -152,6 +154,8 @@ class Queue: # Use _put and _get instead of passing item straight to getter, in # case a subclass has logic that must run (e.g. JoinableQueue). self._put(item) + + # getter cannot be cancelled, we just removed done getters getter.set_result(self._get()) elif self._maxsize > 0 and self._maxsize <= self.qsize(): @@ -200,6 +204,8 @@ class Queue: item, putter = self._putters.popleft() self._put(item) # Wake putter on next tick. + + # getter cannot be cancelled, we just removed done putters putter.set_result(None) return self._get() -- cgit v1.2.1