Sendt fra min iPad Den 3. nov. 2012 kl. 00:30 skrev Antoine Pitrou <solipsis@pitrou.net>:
On Sat, 3 Nov 2012 00:21:43 +0100 Sturla Molden <sturla@molden.no> wrote:
Den 2. nov. 2012 kl. 23:14 skrev Antoine Pitrou <solipsis@pitrou.net>:
On Fri, 2 Nov 2012 22:29:09 +0100 Sturla Molden <sturla@molden.no> wrote:
IOCP might be the easiest way to get high performance on Windows, but certainly not the only.
IOCP is a simple user-space wrapper for a thread-pool and overlapped (i.e. asynchronous) i/o. There is nothing IOCP can do that cannot be done with a pool of threads and non-blocking read or write operations.
Windows certainly has a function to select among multiple wait objects, called WaitForMultipleObjects. If open files are associated with event objects signalling "ready-to-read" or "ready-to-write", that is the basic machinery of an Unix select() function.
Hmm, but the basic problem with WaitForMultipleObjects is that it has a hard limit of 64 objects you can wait on.
Or a simpler solution than nesting them into a tree: Let the calls to WaitForMultipleObjects time out at once, and loop over as many events as you need, polling 64 event objects simultaneously.
Well, that's basically O(number of objects), isn't it?
Yes, but nesting would be O(log64 n).