title: What is the status of POSIX asynchronous I/O (AIO)?
body: <p>There are pages scattered around the web that describe POSIX AIO facilities in varying amounts of detail.  None of them are terribly recent.  It's not clear what, exactly, they're describing.  For example, the "official" (?) <a href="http://lse.sourceforge.net/io/aio.html" rel="noreferrer">web site for Linux kernel asynchronous I/O support here</a> says that sockets don't work, but the "aio.h" manual pages on my Ubuntu 8.04.1 workstation all seem to imply that it works for arbitrary file descriptors.  Then there's <a href="http://www.bullopensource.org/posix/" rel="noreferrer">another project that seems to work at the library layer</a> with even less documentation.</p>
  
  <p>I'd like to know:</p>
  
  <ul>
  <li>What is the purpose of POSIX AIO?  Given that the most obvious example of an implementation I can find says it doesn't support sockets, the whole thing seems weird to me.  Is it just for async disk I/O?  If so, why the hyper-general API?  If not, why is disk I/O the first thing that got attacked?</li>
  <li>Where are there example <em>complete</em> POSIX AIO programs that I can look at?</li>
  <li>Does anyone actually use it, for real?</li>
  <li>What platforms support POSIX AIO?  What parts of it do they support?  Does anyone really support the implied "Any I/O to any FD" that <code>&lt;aio.h&gt;</code> seems to promise?</li>
  </ul>
  
  <p>The other multiplexing mechanisms available to me are perfectly good, but the random fragments of information floating around out there have made me curious.</p>