Martin Wilck wrote:
You may want to consider using Posix aio to implement overlapped I/O, regardless of whether it's a disk file, a network connection, or whatever. glibc has a fallback implementation of aio, and vendors are starting to provide optimized, high-quality implementations. SGI and Red Hat are working hard on it.
I had a look at it, but the current implementation on my system (libc 2.2.2) is limited to files that allow lseek() and therefore only suited for disk files.
Interesting. Probably easy to fix.
Moreover, it requires pthreads. I didn't feel bold enough to check whether it works with Wine's pthreads replacement (btw, aio internally uses threads for doing IO, so if threads are the wrong thing, as Alexandre argued, aio isn't right either).
Ben's aio doesn't make much use of threads, I think. He's actively working on it (he posted an update just today, see http://marc.theaimsgroup.com/?l=linux-aio&m=100587885602310&w=2 ).
Anyway, thanks for the hint, I'll stay tuned with aio.
Great. Mark my words, aio is going to scream; after many years of languishing as a seldom-implemented standard, it's finally becoming available on many flavors of Unix.
- Dan