Antoine Pitrou <pit...@free.fr> added the comment:

Possible plan for POSIX, where a connection uses a pipe() or socketpair(): 
exploit the fact that an endpoint becomes ready for reading (indicating EOF) 
when the other endpoint is closed:

>>> r, w = os.pipe()
>>> select.select([r], [], [r], 0)
([], [], [])
>>> os.close(w)
>>> select.select([r], [], [r], 0)
([4], [], [])

>>> a, b = socket.socketpair()
>>> select.select([b], [], [b], 0)
([], [], [])
>>> a.close()
>>> select.select([b], [], [b], 0)
([<socket.socket object, fd=8, family=1, type=1, proto=0>], [], [])

So, each Process could have a sentinel fd in the parent process, which becomes 
ready when the process exits. These sentinel fds can be used in the various 
select() calls underlying Queue.get().

(I don't understand why _multiprocessing/socket_connection.c in written in C. 
Rewriting it in Python would make improvements much easier)

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue9205>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to