Antoine Pitrou <pit...@free.fr> added the comment: > But Lib/multiprocessing/connection.py does: > > def _send_bytes(self, buf): > # For wire compatibility with 3.2 and lower > n = len(buf) > self._send(struct.pack("=i", len(buf))) > # The condition is necessary to avoid "broken pipe" errors > # when sending a 0-length buffer if the other end closed the pipe. > if n > 0: > self._send(buf) > > This is definitely not atomic.
Indeed, it isn't, Pipe objects are not meant to be safe against multiple access. Queue objects (in multiprocessing/queues.py) use locks so they are safe. ---------- _______________________________________ 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