Several questions concerning libeio internals(+)
mejedi at gmail.com
Wed Dec 16 17:06:18 CET 2015
> As for queues, what in the single result queue doesn't work the way you
> want? You can asociate state with each request either by making the
> struct larger or using the data member, similarly to libev.
Consider eio_open (const char *path, int flags, mode_t mode, int pri, eio_cb cb, void *data).
Assume thread A calls eio_open, I want the completion callback to be invoked in the same thread.
With the libeio current design one can submit requests from multiple threads. Want_poll callback can wake multiple threads at once, though that is going to be inefficient.
However since there’s the single result queue, it’s impossible to route the completed request to the particular thread.
More information about the libev