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.
This commit is contained in:
Victor Stinner 2015-01-09 01:42:52 +01:00
parent 399c59d7bd
commit 3531d9044d
3 changed files with 16 additions and 7 deletions

View file

@ -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()