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: pthreads and sockets - Cannot register window class error


On Wed, 5 May 2004, Christopher Faylor wrote:

> On Wed, May 05, 2004 at 05:38:35AM -0700, Brian Dessent wrote:
> >Jacek Trzmiel wrote:
> >
> >> void test()
> >> {
> >>     /* go find out about the desired host machine */
> >>     struct hostent *he = gethostbyname(HOST);
> >>     if (he == 0) {
> >>         perror("gethostbyname");
> >>         exit(1);
> >>     }
> >
> >Just a wild guess, but gethostbyname() is probably not reentrant and
> >can't be called from threads like that.
>
> Unless HOST is a numeric IP address, gethostbyname should be properly
> reentrant.  The only time gethostbyname is not thread safe is when it is
> resolving a numeric IP.

I believe that gethostbyname(), since it is returning a pointer to a
statically allocated structure, cannot be thread safe under any
circumstances. I always wrap it with a mutex until I'm done with the
hostent structure.

Steve

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


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