aboutsummaryrefslogtreecommitdiffstats
path: root/man/man3/pthread_join.3
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-04-26 15:06:49 +0200
committerAlejandro Colomar <alx@kernel.org>2024-05-02 01:24:19 +0200
commitdcde2f70372b49ec43efc5db864c9ff585d0a2dd (patch)
tree78b9b7425130e4a5858e4c01a524d802423879ed /man/man3/pthread_join.3
parent12aca537ce78a41bbcdaf485209691e10f8002d7 (diff)
downloadman-pages-dcde2f70372b49ec43efc5db864c9ff585d0a2dd.tar.gz
man/, share/mk/: Move man*/ to man/
This is a scripted change: $ mkdir man/; $ mv man* man/; $ ln -st . man/man*; $ find share/mk/ -type f \ | xargs grep -l '^MANDIR *:=' \ | xargs sed -i '/^MANDIR *:=/s,$,/man,'; $ find share/mk/dist/ -type f \ | xargs grep -l man \ | xargs sed -i 's,man%,man/%,g'; Link: <https://lore.kernel.org/linux-man/YxcV4h+Xn7cd6+q2@pevik/T/> Cc: Petr Vorel <pvorel@suse.cz> Cc: Jakub Wilk <jwilk@jwilk.net> Cc: Stefan Puiu <stefan.puiu@gmail.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
Diffstat (limited to 'man/man3/pthread_join.3')
-rw-r--r--man/man3/pthread_join.3134
1 files changed, 134 insertions, 0 deletions
diff --git a/man/man3/pthread_join.3 b/man/man3/pthread_join.3
new file mode 100644
index 0000000000..cbdd363aeb
--- /dev/null
+++ b/man/man3/pthread_join.3
@@ -0,0 +1,134 @@
+'\" t
+.\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH pthread_join 3 (date) "Linux man-pages (unreleased)"
+.SH NAME
+pthread_join \- join with a terminated thread
+.SH LIBRARY
+POSIX threads library
+.RI ( libpthread ", " \-lpthread )
+.SH SYNOPSIS
+.nf
+.B #include <pthread.h>
+.P
+.BI "int pthread_join(pthread_t " thread ", void **" retval );
+.fi
+.SH DESCRIPTION
+The
+.BR pthread_join ()
+function waits for the thread specified by
+.I thread
+to terminate.
+If that thread has already terminated, then
+.BR pthread_join ()
+returns immediately.
+The thread specified by
+.I thread
+must be joinable.
+.P
+If
+.I retval
+is not NULL, then
+.BR pthread_join ()
+copies the exit status of the target thread
+(i.e., the value that the target thread supplied to
+.BR pthread_exit (3))
+into the location pointed to by
+.IR retval .
+If the target thread was canceled, then
+.B PTHREAD_CANCELED
+is placed in the location pointed to by
+.IR retval .
+.P
+If multiple threads simultaneously try to join with the same thread,
+the results are undefined.
+If the thread calling
+.BR pthread_join ()
+is canceled, then the target thread will remain joinable
+(i.e., it will not be detached).
+.SH RETURN VALUE
+On success,
+.BR pthread_join ()
+returns 0;
+on error, it returns an error number.
+.SH ERRORS
+.TP
+.B EDEADLK
+A deadlock was detected
+.\" The following verified by testing on glibc 2.8/NPTL:
+(e.g., two threads tried to join with each other);
+or
+.\" The following verified by testing on glibc 2.8/NPTL:
+.I thread
+specifies the calling thread.
+.TP
+.B EINVAL
+.I thread
+is not a joinable thread.
+.TP
+.B EINVAL
+Another thread is already waiting to join with this thread.
+.\" POSIX.1-2001 does not specify this error case.
+.TP
+.B ESRCH
+No thread with the ID
+.I thread
+could be found.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR pthread_join ()
+T} Thread safety MT-Safe
+.TE
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+POSIX.1-2001.
+.SH NOTES
+After a successful call to
+.BR pthread_join (),
+the caller is guaranteed that the target thread has terminated.
+The caller may then choose to do any clean-up that is required
+after termination of the thread (e.g., freeing memory or other
+resources that were allocated to the target thread).
+.P
+Joining with a thread that has previously been joined results in
+undefined behavior.
+.P
+Failure to join with a thread that is joinable
+(i.e., one that is not detached),
+produces a "zombie thread".
+Avoid doing this,
+since each zombie thread consumes some system resources,
+and when enough zombie threads have accumulated,
+it will no longer be possible to create new threads (or processes).
+.P
+There is no pthreads analog of
+.IR "waitpid(\-1,\ &status,\ 0)" ,
+that is, "join with any terminated thread".
+If you believe you need this functionality,
+you probably need to rethink your application design.
+.P
+All of the threads in a process are peers:
+any thread can join with any other thread in the process.
+.SH EXAMPLES
+See
+.BR pthread_create (3).
+.SH SEE ALSO
+.BR pthread_cancel (3),
+.BR pthread_create (3),
+.BR pthread_detach (3),
+.BR pthread_exit (3),
+.BR pthread_tryjoin_np (3),
+.BR pthreads (7)