The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.
A newer edition of this document exists here


pthread_detach - detach a thread


[THR] [Option Start] #include <pthread.h>

int pthread_detach(pthread_t
thread); [Option End]


The pthread_detach() function shall indicate to the implementation that storage for the thread thread can be reclaimed when that thread terminates. If thread has not terminated, pthread_detach() shall not cause it to terminate. The effect of multiple pthread_detach() calls on the same target thread is unspecified.


If the call succeeds, pthread_detach() shall return 0; otherwise, an error number shall be returned to indicate the error.


The pthread_detach() function may fail if:

The implementation has detected that the value specified by thread does not refer to a joinable thread.
No thread could be found corresponding to that specified by the given thread ID.

The pthread_detach() function shall not return an error code of [EINTR].

The following sections are informative.






The pthread_join() or pthread_detach() functions should eventually be called for every thread that is created so that storage associated with the thread may be reclaimed.

It has been suggested that a "detach" function is not necessary; the detachstate thread creation attribute is sufficient, since a thread need never be dynamically detached. However, need arises in at least two cases:

  1. In a cancellation handler for a pthread_join() it is nearly essential to have a pthread_detach() function in order to detach the thread on which pthread_join() was waiting. Without it, it would be necessary to have the handler do another pthread_join() to attempt to detach the thread, which would both delay the cancellation processing for an unbounded period and introduce a new call to pthread_join(), which might itself need a cancellation handler. A dynamic detach is nearly essential in this case.

  2. In order to detach the "initial thread" (as may be desirable in processes that set up server threads).




pthread_join(), the Base Definitions volume of IEEE Std 1003.1-2001, <pthread.h>


First released in Issue 5. Included for alignment with the POSIX Threads Extension.

Issue 6

The pthread_detach() function is marked as part of the Threads option.

IEEE Std 1003.1-2001/Cor 2-2004, item XSH/TC2/D6/95 is applied, updating the ERRORS section so that the [EINVAL] and [ESRCH] error cases become optional.

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]