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.

#### NAME

> pthread_detach - detach a thread

#### SYNOPSIS

> ``[THR] #include <pthread.h>
> int pthread_detach(pthread_t` thread`);``
> `
> `

#### DESCRIPTION

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

#### RETURN VALUE

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

#### ERRORS

> The pthread_detach() function may fail if:

> [EINVAL]
>   The implementation has detected that the value specified by thread does not refer to a joinable thread.
> [ESRCH]
>   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.

#### EXAMPLES

> None.

#### APPLICATION USAGE

> None.

#### RATIONALE

> 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).

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

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

#### CHANGE HISTORY

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