I'm not familiar with libevent, but if it actually has callers waiting, in a sleep, for events to occur, then all the event handling under Win32 will need to be rewritten to use I/O completion events. I think it is not possible to use IOCP in conjunction with normal Wait() type functions, which I suspect libevent must ultimately rest upon.
Hi Toby,
for the amount of email that you have sent to the libevent mailing list, it's surprising that you don't know more about it. Libevent provides notifications for non-blocking IO. That means that there are no callers waiting in sleep. Any processing using a libevent-like frameworks is done via callbacks. Each callback is assumed to be non-blocking and fast to complete.
Nick's suggestion about investigating the bufferevent layer in libevent seems very reasonable. There are quite a few low-hanging fruits for optimization.
Niels.