Darn, got a bounce. Try agan. >The license of libevent allows doing that, but the code in >WIN32-Code/win32.c is using select(), not IOCP. I prefer waiting for
select() in a Win32 application! FFS. Let me guess, someone with a UNIX background wrote it, thinking that the wait event call would otherwise limit to only 64 handles? Hopefully it can be rescued without the surgery that a change to an IOCP structure would mean: * create an array of event objects, some convenient prime in size <64 * for each async IO request against a socket, hash it randomly across these event objects * maintain a list of requests against each event where we contain the OVERLAPPED structures with their hEvent set to the associated event * WaitForMultipleObjects return will tell you which request list to search * check the completion status of each OVERLAPPED structure. Alternatively use the completion routine facility and receive notification by APCs. But please, don't use Win32 select() except to port UNIXy stuff. Performance will suck, and some stupid fanboy will use it to piss on Microsoft when the problem is in the app. Personally, I'd abstract into a layer that looks much more like IOCP and implement fakes on the *NIX side, and hope that eventually somebody fixes the aio implementations to make this trivial as it should be. As an application programmer, I want to know when the transfer I requested is complete, not be pointlessly woken up every time there is a possibility that *some* data *might* get sent if I try again - I'd hope the OS could schedule some transfers from the protocol manager rather than having to reschedule threads all the time, too. Oh well. James _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list