On Wed, Apr 13, 2016 at 12:00 AM, Wabid Wombat <[email protected]> wrote: > I am tasked with making our server, presently targeting *nix, run on > Windows. The server relies heavily on libev and libeio, neither of which I > know very well (at all, in fact). > > I am facing the choice between (1) making libeio and libev windows-happy, or > (2) moving the server onto libuv. > > Can anyone give me a rough idea of the relative difficulty/merits/demerits? > I am just looking for order-of-magnitude here. In particular, can I just > splice in some new headers, do a global search-and-replace, and walk away > with a shiny new libuv-based server, or is there much grotty structural work > to be done? > > > By the way, the select() barrier of 64 connections and the related > performance issues loom large in our application.
Use libuv. It was created because libev and libeio fall short on Windows. Patching up libeio so it works better on Windows is possible to some extent but it's going to be a lot of work and it's not going to be as battle-tested as libuv. For libev, however, it's hopeless. It's completely built around readiness-based I/O but IOCP on Windows is completion-based and they're fundamentally incompatible. It might be possible to teach libev about AFD (undocumented readiness-based API, only works for sockets, has a couple of other limitations) but again, it's going to be a lot of work. Libuv is not a drop-in placement for libev+libeio because the event loop model is different, http://docs.libuv.org/en/v1.x/design.html outlines how it works. You could convert everything to `uv_poll_t` as a first pass and go from there, it corresponds roughly to `ev_io`). Alternatively, perhaps you can get a zero-changes port of your software going by using the new Windows 10 Linux subsystem. It seems to work well enough to run many applications unchanged and performance is reportedly acceptable. -- You received this message because you are subscribed to the Google Groups "libuv" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/libuv. For more options, visit https://groups.google.com/d/optout.
