<div class="gmail_quote">On Thu, Mar 5, 2009 at 1:30 PM, Neil Schemenauer <span dir="ltr">&lt;<a href="mailto:nas@arctrix.com">nas@arctrix.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
What I would like to see is a module that provides a low-level API<br>
for doing cross-platform asynchronous IO.  The two necessary parts<br>
are:<br>
<br>
    * a wrapper that allows non-blocking reads and writes on<br>
      channels (sockets, file descriptors, serial ports, etc)<br>
<br>
    * a select() or epoll like interface that allows waiting on<br>
      multiple channels<br>
</blockquote><div><br>Two thoughts:<br><br>If you have a working select(), it will tell you the sockets on which read() and write() won&#39;t block, so non-blocking reads and writes are not necessary.<br><br>On Windows, sockets, pipes, and files are each completely distinct types with their own functions and unifying them under one select()-like interface requires faking it using threads behind-the-scenes AFAIK.  Personally, I&#39;d be happy with continuing to only support socket objects on Windows.<br>
</div></div><blockquote style="margin: 1.5em 0pt;">--<br>
Daniel Stutzbach, Ph.D.<br>
President, <a href="http://stutzbachenterprises.com">Stutzbach Enterprises, LLC</a>
</blockquote>