xref: /openbsd-src/lib/libpthread/man/pthread_join.3 (revision 86f9d4cdda0e0267dccd8755ac0035525579c4a7)
1*86f9d4cdStedu.\" $OpenBSD: pthread_join.3,v 1.10 2013/06/05 03:44:50 tedu Exp $
282d2d131Sfgsch.\"
3a278733dSd.\" Copyright (c) 1996-1998 John Birrell <jb@cimlogic.com.au>.
4a278733dSd.\" All rights reserved.
5a278733dSd.\"
6a278733dSd.\" Redistribution and use in source and binary forms, with or without
7a278733dSd.\" modification, are permitted provided that the following conditions
8a278733dSd.\" are met:
9a278733dSd.\" 1. Redistributions of source code must retain the above copyright
10a278733dSd.\"    notice, this list of conditions and the following disclaimer.
11a278733dSd.\" 2. Redistributions in binary form must reproduce the above copyright
12a278733dSd.\"    notice, this list of conditions and the following disclaimer in the
13a278733dSd.\"    documentation and/or other materials provided with the distribution.
14a278733dSd.\" 3. All advertising materials mentioning features or use of this software
15a278733dSd.\"    must display the following acknowledgement:
16a278733dSd.\"	This product includes software developed by John Birrell.
17a278733dSd.\" 4. Neither the name of the author nor the names of any co-contributors
18a278733dSd.\"    may be used to endorse or promote products derived from this software
19a278733dSd.\"    without specific prior written permission.
20a278733dSd.\"
21a278733dSd.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
22a278733dSd.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23a278733dSd.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24a278733dSd.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25a278733dSd.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26a278733dSd.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27a278733dSd.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28a278733dSd.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29a278733dSd.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30a278733dSd.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31a278733dSd.\" SUCH DAMAGE.
32a278733dSd.\"
3374493c91Sd.\" $FreeBSD: pthread_join.3,v 1.6 1999/08/28 00:03:06 peter Exp $
3474493c91Sd.\"
35*86f9d4cdStedu.Dd $Mdocdate: June 5 2013 $
36a278733dSd.Dt PTHREAD_JOIN 3
37c043c0f7Sd.Os
38a278733dSd.Sh NAME
39a278733dSd.Nm pthread_join
40a278733dSd.Nd wait for thread termination
41a278733dSd.Sh SYNOPSIS
42*86f9d4cdStedu.In pthread.h
43a278733dSd.Ft int
44a278733dSd.Fn pthread_join "pthread_t thread" "void **value_ptr"
45a278733dSd.Sh DESCRIPTION
46a278733dSdThe
47a278733dSd.Fn pthread_join
48a278733dSdfunction suspends execution of the calling thread until the target
49a278733dSd.Fa thread
50a278733dSdterminates unless the target
51a278733dSd.Fa thread
52a278733dSdhas already terminated.
53a278733dSd.Pp
54a278733dSdOn return from a successful
55a278733dSd.Fn pthread_join
56a278733dSdcall with a non-NULL
57a278733dSd.Fa value_ptr
58a278733dSdargument, the value passed to
59a278733dSd.Fn pthread_exit
60a278733dSdby the terminating thread is stored in the location referenced by
61a278733dSd.Fa value_ptr .
62a278733dSdWhen a
63a278733dSd.Fn pthread_join
64ee997aeaSmpechreturns successfully, the target thread has been terminated.
65ee997aeaSmpechThe results of multiple simultaneous calls to
66a278733dSd.Fn pthread_join
67ee997aeaSmpechspecifying the same target thread are undefined.
68ee997aeaSmpechIf the thread calling
69a278733dSd.Fn pthread_join
70a278733dSdis cancelled, then the target thread is not detached.
71a278733dSd.Pp
72a278733dSdA thread that has exited but remains unjoined counts against
73a278733dSd[_POSIX_THREAD_THREADS_MAX].
74a278733dSd.Sh RETURN VALUES
75a278733dSdIf successful, the
76a278733dSd.Fn pthread_join
77ee997aeaSmpechfunction will return zero.
78ee997aeaSmpechOtherwise an error number will be returned to indicate the error.
79a278733dSd.Sh ERRORS
80a278733dSd.Fn pthread_join
81a278733dSdwill fail if:
82a278733dSd.Bl -tag -width Er
83a278733dSd.It Bq Er EINVAL
84a278733dSdThe implementation has detected that the value specified by
85a278733dSd.Fa thread
86a278733dSddoes not refer to a joinable thread.
87a278733dSd.It Bq Er ESRCH
88a278733dSdNo thread could be found corresponding to that specified by the given
89a278733dSdthread ID,
90a278733dSd.Fa thread .
91a278733dSd.It Bq Er EDEADLK
92a278733dSdA deadlock was detected or the value of
93a278733dSd.Fa thread
94a278733dSdspecifies the calling thread.
95a278733dSd.El
96a278733dSd.Sh SEE ALSO
97a278733dSd.Xr wait 2 ,
98a278733dSd.Xr pthread_create 3
99a278733dSd.Sh STANDARDS
100a278733dSd.Fn pthread_join
10182d2d131Sfgschconforms to
10282d2d131Sfgsch.St -p1003.1-96 .
103