mirror of https://github.com/mkerrisk/man-pages
140 lines
3.7 KiB
Groff
140 lines
3.7 KiB
Groff
.\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk
|
|
.\" <mtk.manpages@gmail.com>
|
|
.\"
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
.\" permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
.\" have taken the same level of care in the production of this manual,
|
|
.\" which is licensed free of charge, as they might when working
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH PTHREAD_TRYJOIN_NP 3 2010-09-10 "Linux" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
pthread_tryjoin_np, pthread_timedjoin_np \- try to join with a
|
|
terminated thread
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
|
|
.B #include <pthread.h>
|
|
|
|
.BI "int pthread_tryjoin_np(pthread_t " thread ", void **" retval );
|
|
|
|
.BI "int pthread_timedjoin_np(pthread_t " thread ", void **" retval ,
|
|
.BI " const struct timespec *" abstime );
|
|
.fi
|
|
.sp
|
|
Compile and link with \fI\-pthread\fP.
|
|
.SH DESCRIPTION
|
|
These functions operate in the same way as
|
|
.BR pthread_join (3),
|
|
except for the differences described on this page.
|
|
|
|
The
|
|
.BR pthread_tryjoin_np ()
|
|
function performs a nonblocking join with the thread
|
|
.IR thread ,
|
|
returning the exit status of the thread in
|
|
.IR *retval .
|
|
If
|
|
.I thread
|
|
has not yet terminated, then instead of blocking, as is done by
|
|
.BR pthread_join (3),
|
|
the call returns an error.
|
|
|
|
The
|
|
.BR pthread_timedjoin_np ()
|
|
function performs a join-with-timeout.
|
|
If
|
|
.I thread
|
|
has not yet terminated,
|
|
then the call blocks until a maximum time, specified in
|
|
.IR abstime .
|
|
If the timeout expires before
|
|
.I thread
|
|
terminates,
|
|
the call returns an error.
|
|
The
|
|
.I abstime
|
|
argument is a structure of the following form,
|
|
specifying an absolute time measured since the Epoch (see
|
|
.BR time (2)):
|
|
|
|
.in +4n
|
|
.nf
|
|
struct timespec {
|
|
time_t tv_sec; /* seconds */
|
|
long tv_nsec; /* nanoseconds */
|
|
};
|
|
.fi
|
|
.in
|
|
.SH RETURN VALUE
|
|
On success,
|
|
these functions return 0;
|
|
on error, they return an error number.
|
|
.SH ERRORS
|
|
These functions can fail with the same errors as
|
|
.BR pthread_join (3).
|
|
.BR pthread_tryjoin_np ()
|
|
can in addition fail with the following error:
|
|
.TP
|
|
.B EBUSY
|
|
.I thread
|
|
had not yet terminated at the time of the call.
|
|
.PP
|
|
.BR pthread_timedjoin_np ()
|
|
can in addition fail with the following error:
|
|
.TP
|
|
.BR ETIMEDOUT
|
|
The call timed out before
|
|
.I thread
|
|
terminated.
|
|
.PP
|
|
.BR pthread_timedjoin_np ()
|
|
never returns the error
|
|
.BR EINTR .
|
|
.SH VERSIONS
|
|
These functions first appeared in glibc in version 2.3.3.
|
|
.SH CONFORMING TO
|
|
These functions are nonstandard GNU extensions;
|
|
hence the suffix "_np" (nonportable) in the names.
|
|
.SH EXAMPLE
|
|
The following code waits to join for up to 5 seconds:
|
|
|
|
.nf
|
|
struct timespec ts;
|
|
int s;
|
|
|
|
...
|
|
|
|
if (clock_gettime(CLOCK_REALTIME, &ts) == \-1) {
|
|
/* Handle error */
|
|
}
|
|
|
|
ts.tv_sec += 5;
|
|
|
|
s = pthread_timedjoin_np(thread, NULL, &ts);
|
|
if (s != 0) {
|
|
/* Handle error */
|
|
}
|
|
.fi
|
|
.SH SEE ALSO
|
|
.BR clock_gettime (2),
|
|
.BR pthread_exit (3),
|
|
.BR pthread_join (3),
|
|
.BR pthreads (7)
|