From: John David Anglin Date: Fri, 12 Oct 2007 00:09:10 +0000 (+0000) Subject: gthr-posix.h (__gthread_active_init): Create detached instead of joinable thread... X-Git-Tag: releases/gcc-4.3.0~2095 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d796bfa95cbd60745f2131875283870e3703fc0c;p=thirdparty%2Fgcc.git gthr-posix.h (__gthread_active_init): Create detached instead of joinable thread when... * gthr-posix.h (__gthread_active_init): Create detached instead of joinable thread when testing whether threads are active on hppa-hpux. * gthr-posix95.h (__gthread_active_init): Likewise. From-SVN: r129246 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dac597f2b621..a5272799e0dd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-10-11 John David Anglin + + * gthr-posix.h (__gthread_active_init): Create detached instead of + joinable thread when testing whether threads are active on hppa-hpux. + * gthr-posix95.h (__gthread_active_init): Likewise. + 2007-10-11 Kenneth Zadeck PR middle-end/33676 diff --git a/gcc/gthr-posix.h b/gcc/gthr-posix.h index 5c00cd308623..ad6822e26ade 100644 --- a/gcc/gthr-posix.h +++ b/gcc/gthr-posix.h @@ -246,20 +246,20 @@ __gthread_active_init (void) { static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_t t; + pthread_attr_t a; int result; __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); if (__gthread_active < 0) { - result = __gthrw_(pthread_create) (&t, NULL, __gthread_start, NULL); + __gthrw_(pthread_attr_init) (&a); + __gthrw_(pthread_attr_setdetachstate) (&a, PTHREAD_CREATE_DETACHED); + result = __gthrw_(pthread_create) (&t, &a, __gthread_start, NULL); if (result != ENOSYS) - { - __gthread_active = 1; - if (!result) - __gthrw_(pthread_join) (t, NULL); - } + __gthread_active = 1; else __gthread_active = 0; + __gthrw_(pthread_attr_destroy) (&a); } __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); } diff --git a/gcc/gthr-posix95.h b/gcc/gthr-posix95.h index df250d2bf410..eb54c925f6f8 100644 --- a/gcc/gthr-posix95.h +++ b/gcc/gthr-posix95.h @@ -209,20 +209,20 @@ __gthread_active_init (void) { static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_t t; + pthread_attr_t a; int result; __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); if (__gthread_active < 0) { - result = __gthrw_(pthread_create) (&t, NULL, __gthread_start, NULL); + __gthrw_(pthread_attr_init) (&a); + __gthrw_(pthread_attr_setdetachstate) (&a, PTHREAD_CREATE_DETACHED); + result = __gthrw_(pthread_create) (&t, &a, __gthread_start, NULL); if (result != ENOSYS) - { - __gthread_active = 1; - if (!result) - __gthrw_(pthread_join) (t, NULL); - } + __gthread_active = 1; else __gthread_active = 0; + __gthrw_(pthread_attr_destroy) (&a); } __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); }