Posted Mar 15, 2007 21:01 UTC (Thu) by bronson (subscriber, #4806)
[Link]
http://svn.u32.net/io/trunk/ works pretty well too but I haven't gotten around to documenting it yet... if ever...
Kernel events without kevents
Posted Mar 16, 2007 7:03 UTC (Fri) by pphaneuf (guest, #23480)
[Link]
Thanks, it seems interesting, I'll definitely have a look, since I'm in the process of making a similar edge-triggered wrapper like this, but with the added twist of multithreaded (a limited number of threads, so that more events can be handled in a given amount of time, to use multicore systems and such while still being event driven).
Kernel events without kevents
Posted Mar 16, 2007 11:55 UTC (Fri) by bronson (subscriber, #4806)
[Link]
I agree, multicore is here to stay. That code lets me run one epoll poller per thread and one thread per core (plus a few maintenance threads). I haven't tried it under serious load yet so there may be a few small bugs left to wiggle out, and the poller selection is utterly hacked (it's a todo item), but it works for me so far.
Feel free to mail me at bronson at domain rinspin.com.
Kernel events without kevents
Posted Mar 16, 2007 6:59 UTC (Fri) by pphaneuf (guest, #23480)
[Link]
Indeed, and I very much love epoll for that, but for that to work between a library and an application (with the library putting things into the epoll fd, and the application being the one calling epoll_wait()), they pretty much have to use the same tiny bit of wrapping.
After that, it can totally be done, but if you make your library for, say, libevent, and someone tries using it in a Qt program, it's a pain.