Jp Calderone wrote:
Jeff Bowden wrote:
On Linux, file descriptors for disk files are always "ready".
Since twisted is based on select() or poll() I'm guessing you will end up actually blocking on file reads.
I think you can get non-blocking file reads using the new AIO stuff
On some systems, right.
but it's not really a good match for a single process server like twisted.
Hmm. Why do you say this? It's true that AIO will require reactor support (IOCP is essentially such a reactor, except for Windows). I don't see a problem with using AIO in a single process, though, and apparently neither did Pavel when he wrote IOCP.
I don't know about BSD/OSX or Windows.
KQueue supports on-disk files, I suspect. There is no working KQueue reactor, though, so that takes care of BSD/OSX. Windows has IO Completion Ports, which IOCP uses (hence the name ;).
I'm confused. It sounds like you're saying that there is a reactor called IOCP that runs on Linux and uses AIO. But it also sounds like it's Windows only. Which?
Also, it occurred to me since I wrote my original response that I remember a while ago seeing support for async file i/o as a bullet item on the epoll TODO list. I can't find any reference to it at the moment though.