Later I discovered that it is possible to do efficient epoll emulation on windows so then I wrote wepoll. With it you can just stick to the good ol' epoll/kqueue model and still support windows.
Call this overlapped-poll function on every monitored socket individually so you don't inherit poll()s scalability problems.
See https://github.com/piscisaureus/wepoll/blob/437fb2f24ce197b4...
This is as much of an explanation I can type on my phone - I'll add more detail to the wepoll readme later.
libuv, has the follow (iirc) genealogy :
libevent -> libev -> libuv
like its predecessors (with the exception of libev i think) it has grown to be quite large, but its core is still centered on the concept of an event loop. the event-loop itself is hidden, and 'user' code interacts with it via callback event handlers.given this context, i still don't quite understand how/where libdill might play a role here ?
fwiw, almost all of these event-processing libraries, supports multiple event loops, and thus an event loop is a first class citizen within the library, and implement functions for creating/destroying/starting/stopping loops. multiple event loops find their uses specifically in the context of multi-threaded servers for example.