Trying to join an already exited pthread

Garrett Cooper youshi10 at u.washington.edu
Thu Feb 8 14:51:16 UTC 2007


Garrett Cooper wrote:
> On Feb 7, 2007, at 1:51 PM, Steve Watt wrote:
> 
>> In <Pine.LNX.4.43.0702071314560.22034 at hymn08.u.washington.edu>,
>>  <youshi10 at u.washington.edu> wrote:
>>> Just wondering:
>>>
>>> If I was to try and join a pthread that already exited, would there 
>>> be an error
>>> message output and/or errno set to an error value, or would a system 
>>> hang?
>>
>> Was the thread created with detach state set PTHREAD_CREATE_DETACHED or
>> PTHREAD_CREATE_JOINABLE?  If it was PTHREAD_CREATE_JOINABLE, has the
>> thread already been joined?
>>
>> You should be able to join a thread that was created joinable, only once.
>> If you join it again, or join a thread that was created detached, the
>> results are unspecified in POSIX.  There is an error status that may
>> be returned, but it may do other bad things to your system.
>>
>> Note that pthread_join doesn't set errno; it returns an error value
>> directly.  I would never expect the system to hang, though the 
>> application
>> might.  If your application is hanging, make sure that you're not trying
>> to call pthread_join from within a signal handler.
>>
>>> It this variable on Unix OSes?
>>
>> That the results are unspecified?  No.  What "unspecified" means?
>> Absolutely.
>> --Steve Watt KD6GGD  PP-ASEL-IA          ICBM: 121W 56' 57.5" / 37N 
>> 20' 15.3"
>>  Internet: steve @ Watt.COM                      Whois: SW32-ARIN
>>    Free time?  There's no such thing.  It just comes in varying prices...
> 
>     I asked this because I was short on time and so was the person who 
> asked me earlier. I'm going to try giving the pthread exit and join a 
> shot just to see whether or not this is true or not and then I'll report 
> my results to the list.
>     Thanks for the insight though--hopefully my results will yield a 
> solid positive or negative to this being a problem.
> -Garrett

Under Suse Linux there were absolutely no errors when I tried to do 
this. I'll post a code snippet later.
-Garrett


More information about the freebsd-hackers mailing list