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