Adding Linux ASYNC I/O to libev
schmorp at schmorp.de
Wed Mar 9 23:05:03 CET 2011
On Wed, Mar 09, 2011 at 01:04:55PM +0300, Konstantin Osipov <kostja.osipov at gmail.com> wrote:
> Sorry if it was raised before, but are there plans to
> add support for Linux asynchronous file I/O to libev loop?
Does linux (the kernel) have asynchronous file I/O nowadays - do you have
any pointers to "linux async file I/O"?
Last I looked, all aio functionality was still in userspace (glibc), with
much more overhead than libeio (and there is experimental and broken
kernel support that requires special (non-posix) fd's to work and has lots
of other limitations).
And then there is the problem of it often being slower than using threads.
> While it's not done, what's the canonical way to integrate libeio
> into libev loop?
the simplest "canonical" way is to send to an ev_async watcher from the
want_poll callback, then in the async watcher callback, call eio_poll
until it returns 0. for the done_cb argument you can pass 0, as the async
watcher does the necessary logic for you (it's possible to optimise a bit
more out of this).
I think so, at least... long time ago.
The choice of a Deliantra, the free code+content MORPG
-----==- _GNU_ http://www.deliantra.net
----==-- _ generation
---==---(_)__ __ ____ __ Marc Lehmann
--==---/ / _ \/ // /\ \/ / schmorp at schmorp.de
More information about the libev