Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Wed, 5 May 2004 18:40:13 -0400 (EDT) From: Steve Thompson Reply-To: smt AT vgersoft DOT com To: cygwin AT cygwin DOT com Subject: Re: pthreads and sockets - Cannot register window class error In-Reply-To: <20040505210340.GB321@coe.bosbc.com> Message-ID: References: <4098760F DOT CDB4F630 AT hot DOT pl> <4098E04B DOT 34D2866B AT dessent DOT net> <20040505210340 DOT GB321 AT coe DOT bosbc DOT com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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/