PTHREAD_DETACH(3) Library Functions Manual PTHREAD_DETACH(3)

pthread_detachdetach a thread


#include <pthread.h>

int pthread_detach(pthread_t thread);

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 shall 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].

None.

None.

The pthread_join(3) 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 thread creation attribute is sufficient, since a thread need never be dynamically detached. However, need arises in at least two cases:

  1. In a cancelation handler for a pthread_join(3) it is nearly essential to have a pthread_detach () function in order to detach the thread on which pthread_join(3) was waiting. Without it, it would be necessary to have the handler do another pthread_join(3) to attempt to detach the thread, which would both delay the cancelation processing for an unbounded period and introduce a new call to pthread_join(3), which might itself need a cancelation 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).

None.

pthread_join(3) , the Base Definitions volume of IEEE Std 1003.1-2001 (“POSIX.1”), <pthread.h>

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

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

footer end

December 6, 2001 posix.fail