mirror of https://github.com/mkerrisk/man-pages
96 lines
3.1 KiB
Plaintext
96 lines
3.1 KiB
Plaintext
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
|
.TH "PTHREAD_DETACH" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
|
.\" pthread_detach
|
|
.SH NAME
|
|
pthread_detach \- detach a thread
|
|
.SH SYNOPSIS
|
|
.LP
|
|
\fB#include <pthread.h>
|
|
.br
|
|
.sp
|
|
int pthread_detach(pthread_t\fP \fIthread\fP\fB); \fP
|
|
\fB
|
|
.br
|
|
\fP
|
|
.SH DESCRIPTION
|
|
.LP
|
|
The \fIpthread_detach\fP() function shall indicate to the implementation
|
|
that storage for the thread \fIthread\fP can be
|
|
reclaimed when that thread terminates. If \fIthread\fP has not terminated,
|
|
\fIpthread_detach\fP() shall not cause it to
|
|
terminate. The effect of multiple \fIpthread_detach\fP() calls on
|
|
the same target thread is unspecified.
|
|
.SH RETURN VALUE
|
|
.LP
|
|
If the call succeeds, \fIpthread_detach\fP() shall return 0; otherwise,
|
|
an error number shall be returned to indicate the
|
|
error.
|
|
.SH ERRORS
|
|
.LP
|
|
The \fIpthread_detach\fP() function shall fail if:
|
|
.TP 7
|
|
.B EINVAL
|
|
The implementation has detected that the value specified by \fIthread\fP
|
|
does not refer to a joinable thread.
|
|
.TP 7
|
|
.B ESRCH
|
|
No thread could be found corresponding to that specified by the given
|
|
thread ID.
|
|
.sp
|
|
.LP
|
|
The \fIpthread_detach\fP() function shall not return an error code
|
|
of [EINTR].
|
|
.LP
|
|
\fIThe following sections are informative.\fP
|
|
.SH EXAMPLES
|
|
.LP
|
|
None.
|
|
.SH APPLICATION USAGE
|
|
.LP
|
|
None.
|
|
.SH RATIONALE
|
|
.LP
|
|
The \fIpthread_join\fP() or \fIpthread_detach\fP() functions should
|
|
eventually be
|
|
called for every thread that is created so that storage associated
|
|
with the thread may be reclaimed.
|
|
.LP
|
|
It has been suggested that a "detach" function is not necessary; the
|
|
\fIdetachstate\fP thread creation attribute is
|
|
sufficient, since a thread need never be dynamically detached. However,
|
|
need arises in at least two cases:
|
|
.IP " 1." 4
|
|
In a cancellation handler for a \fIpthread_join\fP() it is nearly
|
|
essential to
|
|
have a \fIpthread_detach\fP() function in order to detach the thread
|
|
on which \fIpthread_join\fP() was waiting. Without it, it would be
|
|
necessary to have the handler do
|
|
another \fIpthread_join\fP() to attempt to detach the thread, which
|
|
would both delay
|
|
the cancellation processing for an unbounded period and introduce
|
|
a new call to \fIpthread_join\fP(), which might itself need a cancellation
|
|
handler. A dynamic detach is
|
|
nearly essential in this case.
|
|
.LP
|
|
.IP " 2." 4
|
|
In order to detach the "initial thread" (as may be desirable in processes
|
|
that set up server threads).
|
|
.LP
|
|
.SH FUTURE DIRECTIONS
|
|
.LP
|
|
None.
|
|
.SH SEE ALSO
|
|
.LP
|
|
\fIpthread_join\fP() , the Base Definitions volume of IEEE\ Std\ 1003.1-2001,
|
|
\fI<pthread.h>\fP
|
|
.SH COPYRIGHT
|
|
Portions of this text are reprinted and reproduced in electronic form
|
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
|
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
|
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
|
event of any discrepancy between this version and the original IEEE and
|
|
The Open Group Standard, the original IEEE and The Open Group Standard
|
|
is the referee document. The original Standard can be obtained online at
|
|
http://www.opengroup.org/unix/online.html .
|