This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: python doesn't allow descriptors > 63 in select


On Aug  3 12:04, Reini Urban wrote:
> 2011/8/3 Corinna Vinschen:
> > Â$ python sel.py
> > Âsocket opened with fd 3
> > Âsocket opened with fd 4
> > Âsocket opened with fd 5
> > Â[...]
> > Âsocket opened with fd 62
> > Âsocket opened with fd 63
> > Âsocket opened with fd 64
> > Âsocket opened with fd 64
> > ÂTraceback (most recent call last):
> > Â ÂFile "test.py", line 10, in <module>
> > Â Â Âselect(ins, [], [], 0)
> > ÂValueError: filedescriptor out of range in select()
> >
> > I debugged this and it turns out that python does not call Cygwin's
> > select function anymore, as soon as there's a file descriptor in the
> > set which is >= 64.
> 
> I have a similar limitation in postgresql, and I heard that this is
> based on a windows limitation, not any predefined constant.
> In postgresql I can max fork 63 worker childs, tested by a configure probe.

I don't know why that is, since Cygwin allows 256 children per process.

Either way, that's not related to select.  Cygwin's select is using a
single WaitForMultipleObjects (WFMO) call at the core.  This WFMO call
is restricted to 63 wait objects.  But many object types are handled by
a common thread, and only this thread is given to WFMO.  So, for
instance, all sockets given to select together take only one waitable
object in the WFMO call.

So far this works for sockets, pipes, fifos, ptys and /dev/log.  All
other objects take one WFMO slot per descriptor.

However, if you restrict your application to 64 objects, you will never
be able to use more, even if Cygwin's select supports that already or
will support it at one point, depending on the descriptor type.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]