summaryrefslogtreecommitdiff
path: root/static/freebsd/man3/pthread_join.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man3/pthread_join.3')
-rw-r--r--static/freebsd/man3/pthread_join.3194
1 files changed, 194 insertions, 0 deletions
diff --git a/static/freebsd/man3/pthread_join.3 b/static/freebsd/man3/pthread_join.3
new file mode 100644
index 00000000..671ce7bb
--- /dev/null
+++ b/static/freebsd/man3/pthread_join.3
@@ -0,0 +1,194 @@
+.\" Copyright (c) 1996-1998 John Birrell <jb@cimlogic.com.au>.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by John Birrell.
+.\" 4. Neither the name of the author nor the names of any co-contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd October 12, 2021
+.Dt PTHREAD_JOIN 3
+.Os
+.Sh NAME
+.Nm pthread_join ,
+.Nm pthread_peekjoin_np ,
+.Nm pthread_timedjoin_np
+.Nm pthread_tryjoin_np
+.Nd inspect thread termination state
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_join "pthread_t thread" "void **value_ptr"
+.In pthread_np.h
+.Ft int
+.Fo pthread_peekjoin_np
+.Fa "pthread_t thread"
+.Fa "void **value_ptr"
+.Fc
+.Ft int
+.Fo pthread_timedjoin_np
+.Fa "pthread_t thread"
+.Fa "void **value_ptr"
+.Fa "const struct timespec *abstime"
+.Fc
+.Ft int
+.Fn pthread_tryjoin_np "pthread_t thread" "void **value_ptr"
+.Sh DESCRIPTION
+The
+.Fn pthread_join
+function suspends execution of the calling thread until the target
+.Fa thread
+terminates unless the target
+.Fa thread
+has already terminated.
+.Pp
+On return from a successful
+.Fn pthread_join
+call with a non-NULL
+.Fa value_ptr
+argument, the value passed to
+.Fn pthread_exit
+by the terminating thread is stored in the location referenced by
+.Fa value_ptr .
+When a
+.Fn pthread_join
+returns successfully, the target thread has been terminated.
+The results
+of multiple simultaneous calls to
+.Fn pthread_join
+specifying the same target thread are undefined.
+If the thread calling
+.Fn pthread_join
+is cancelled, then the target thread is not detached.
+.Pp
+The
+.Fn pthread_timedjoin_np
+function is equivalent to the
+.Fn pthread_join
+function except it will return
+.Er ETIMEDOUT
+if target thread does not exit before specified absolute time passes.
+.Pp
+The
+.Fn pthread_peekjoin_np
+only peeks into the exit status of the specified thread.
+If the thread has not exited, the
+.Er EBUSY
+error is returned.
+Otherwise, zero is returned and the thread exit value is optionally stored
+into the location of
+.Fa *value_ptr .
+The target thread is left unjoined and can be used as an argument for
+the
+.Fn pthread_join
+family of functions again.
+.Pp
+The
+.Fn pthread_tryjoin_np
+function joins the thread if it is already terminated, same as
+.Fn pthread_join .
+If the thread has not yet terminated, the function returns
+.Er EBUSY .
+.Pp
+A thread that has exited but remains unjoined counts against
+[_POSIX_THREAD_THREADS_MAX].
+.Sh RETURN VALUES
+If successful, the described functions return zero.
+Otherwise an error number is returned to indicate the error or
+special condition.
+.Sh ERRORS
+The
+.Fn pthread_join ,
+.Fn pthread_peekjoin_np ,
+and
+.Fn pthread_timedjoin_np
+functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The implementation has detected that the value specified by
+.Fa thread
+does not refer to a joinable thread.
+.It Bq Er ESRCH
+No thread could be found corresponding to that specified by the given
+thread ID,
+.Fa thread .
+.It Bq Er EDEADLK
+A deadlock was detected or the value of
+.Fa thread
+specifies the calling thread.
+.It Bq Er EOPNOTSUPP
+The implementation detected that another caller is already waiting on
+.Fa thread .
+.El
+.Pp
+Additionally, the
+.Fn pthread_timedjoin_np
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ETIMEDOUT
+The specified absolute time passed while
+.Fn pthread_timedjoin_np
+waited for thread exit.
+.El
+.Pp
+The
+.Fn pthread_peekjoin_np
+and
+.Fn pthread_tryjoin_np
+functions will also fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+The specified thread has not yet exited.
+.El
+.Sh SEE ALSO
+.Xr wait 2 ,
+.Xr pthread 3 ,
+.Xr pthread_create 3 ,
+.Xr pthread_np 3
+.Sh STANDARDS
+The
+.Fn pthread_join
+function conforms to
+.St -p1003.1-96 .
+The
+.Fn pthread_timedjoin_np
+function is a
+.Fx
+extension which first appeared in
+.Fx 6.1 .
+The
+.Fn pthread_peekjoin_np
+function is a
+.Fx
+extension which first appearead in
+.Fx 13.0 .
+The
+.Fn pthread_tryjoin_np
+function is a
+.Fx
+extension which first appearead in
+.Fx 16.0 .