[Python-ideas] yield from multiple iterables (was Re: The async API of the future: yield-from)
Dino Viehland
dinov at microsoft.com
Tue Oct 23 06:46:43 CEST 2012
Greg wrote:
> Guido van Rossum wrote:
>
> > The reason we can't ignore IOCP is that it is apparently the *only*
> > way to do async I/O in a scalable way. The only other polling
> > primitive available is select() which does not scale.
>
> There seems to be an alternative to polling, though. There are functions called
> ReadFileEx and WriteFileEx that allow you to pass in a routine to be called when
> the operation completes:
>
> http://msdn.microsoft.com/en-
> us/library/windows/desktop/aa365468%28v=vs.85%29.aspx
> http://msdn.microsoft.com/en-
> us/library/windows/desktop/aa365748%28v=vs.85%29.aspx
>
> Is there some reason that this doesn't scale either?
I suspect it's because it has the completion routine is being invoked on the same
thread that issued the I/O. The thread has to first block in an alertable wait (e.g.
WaitForMultipleObjectsEx or WSAWaitForMultipleEvents). So you'll only get 1
thread doing I/Os and CPU work vs IOCP's where many threads can share both
workloads.
More information about the Python-ideas
mailing list