[Python-Dev] Pervasive socket failures on Windows (original) (raw)

Tim Peters tim.peters at gmail.com
Fri Feb 10 18:43:00 CET 2006


[Thomas Wouters]

Perhaps the memory you have is of select-lookalikes, like poll(),

No, it was definitely select(), and on a 64-bit Unix (probably not Linux) that allowed for an enormous number of sockets.

or maybe of vendor-specific (and POSIX-breaking) extensions to select().

Yes, it must have been non-POSIX.

select() performs pretty poorly on large fdsets with holes in, and has the fixed size fdset problem, so poll() was added to fix that (by Linux and later by XPG4, IIRC.) poll() takes an array of structs containing the fd, the operations to watch for and an output parameter with seen events. Does that jar your memory? :)

No more than it had been jarred ;-) Well, a bit more: it was possible to pass a first argument to select() that was larger than FD_SETSIZE. In effect, FD_SETSIZE had no meaning.

(The socketmodule has support for poll(), on systems that have it, by the way.)

Yup.



More information about the Python-Dev mailing list