Trying to join an already exited pthread
Garrett Cooper
youshi10 at u.washington.edu
Fri Feb 9 05:06:26 UTC 2007
Garrett Cooper wrote:
> 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
Ok, here's a link to my code:
http://students.washington.edu/youshi10/posted/thread_test.c
My results (FreeBSD):
[root at hoover /home/gcooper]# ./tt
Thread join detached
Thread kill detached
Joined thread yielded error code: 2
Trying to join the already joined thread yields error code: 0
My results (Suse Linux):
# ./tt
Thread join detached
Thread kill detached
Joined thread yielded error code: 0
Trying to join the already joined thread yields error code: 0
That was sure interesting.. is it supposed to error out or was it the
remnant of an old error call?
Probably the latter, but I was just curious..
-Garrett
More information about the freebsd-questions
mailing list