Den 3. nov. 2012 kl. 10:35 skrev Nick Coghlan email@example.com:
On Sat, Nov 3, 2012 at 9:10 AM, Sturla Molden firstname.lastname@example.org wrote:
The root allows us to wait for 64 objects, the first branch allows us to wait for 4096, and the second 262144...
For example, if 4096 wait objects are enough, we can use a pool of 64 threads. Each thread calls WaitForMultipleObjects on up to 64 wait objects, and signals to the master when it wakes up.
Given that the purposes of using async IO is to improve scalability on a single machine by a factor of 100 or more beyond what is typically possible with threads or processes, hard capping the scaling improvement on Windows at 64x the thread limit by relying on WaitForMultipleObjects seems to be rather missing the point.
The only thread limitation on Windows 64 is the amount of RAM.
IOCPs are also thread-based (they are actually user-space thread pools).