perhaps pthread_attr_t really needs to be set for the old api
authorArtur Bergman <sky@nanisky.com>
Fri, 12 Oct 2001 18:28:23 +0000 (18:28 +0000)
committerArtur Bergman <sky@nanisky.com>
Fri, 12 Oct 2001 18:28:23 +0000 (18:28 +0000)
p4raw-id: //depot/perl@12412

ext/threads/threads.xs

index 378127c..8db1b88 100755 (executable)
@@ -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