More testing of cv-branch required
Tue Jul 11 09:26:00 GMT 2006
I have checked in more patches to cv-branch. As became clear from error
reports in the last couple of weeks, the socket event handling, which is
supposed to allow interruptible socket calls, isn't working correctly
when the same socket is used concurrently in multiple threads or
processes. Limitations in Winsock have it, that the event handling must
be coordinated and data has to be shared between threads and processes
to get it "right".
The new code now tries to accomplish exactly that. The new event
handling uses a shared data structure and always handles all socket
events, regardless which function (accept/connect/read/write) is
actually called. It only passes back what the calling function actually
requested and keeps stored everything else for the next caller to come.
The data is stored in a fixed size array which happens to fit into 64K.
The result is that all active Cygwin processes running on the machine
are limited to a combined number of 5461 sockets. Duplicated and
inherited sockets count as one socket here (that's the idea of sharing
sockets, right?) I think this should be enough for some time, though.
Anyway, this needs a lot of testing and debugging. Since the replies to
my IPv6 mail on this list were so overwhelming and heart-warming, I
thought I should try again and ask the people on this list for
participation. I hope it's not futile.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
More information about the Cygwin-developers