From: Artur Bergman Date: Fri, 12 Oct 2001 18:28:23 +0000 (+0000) Subject: perhaps pthread_attr_t really needs to be set for the old api X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=fa26028c8ed1adcf8bc3898ae6ee3ef9254b86af;p=p5sagit%2Fp5-mst-13.2.git perhaps pthread_attr_t really needs to be set for the old api p4raw-id: //depot/perl@12412 --- diff --git a/ext/threads/threads.xs b/ext/threads/threads.xs index 378127c..8db1b88 100755 --- a/ext/threads/threads.xs +++ b/ext/threads/threads.xs @@ -157,7 +157,21 @@ SV* Perl_thread_create(char* class, SV* init_function, SV* params) { #else #ifdef OLD_PTHREADS_API - pthread_create( &thread->thr, (pthread_attr_t)NULL, Perl_thread_run, (void *)thread); + { + static pthread_attr_t attr; + static int attr_inited = 0; + sigset_t fullmask, oldmask; + static int attr_joinable = PTHREAD_CREATE_JOINABLE; + if (!attr_inited) { + attr_inited = 1; + pthread_attr_init(&attr); + } +# ifdef PTHREAD_ATTR_SETDETACHSTATE + PTHREAD_ATTR_SETDETACHSTATE(&attr, attr_joinable); +# endif + + pthread_create( &thread->thr, attr, Perl_thread_run, (void *)thread); + } #else pthread_create( &thread->thr, (pthread_attr_t*)NULL, Perl_thread_run, (void *)thread); #endif