Standard C Library Functions thrjoin(3C)
NAME
thrjoin - wait for thread termination
SYNOPSIS
cc -mt [ flag... ] file...[ library... ]
#include
int thrjoin(threadt thread, threadt *departed, void **status);
DESCRIPTION
The thrjoin() function suspends processing of the calling
thread until the target thread completes. The thread argu-
ment must be a member of the current process and cannot be a
detached thread. See thrcreate(3C).
If two or more threads wait for the same thread to complete,
all will suspend processing until the thread has terminated,
and then one thread will return successfully and the others
will return with an error of ESRCH. The thrjoin() function
will not block processing of the calling thread if the tar-
get thread has already terminated.
If a thrjoin() call returns successfully with a non-null
status argument, the value passed to threxit(3C) by the
terminating thread will be placed in the location referenced
by status.
If the target thread ID is 0, thrjoin() finds and returns
the status of a terminated undetached thread in the process.
If no such thread exists, it suspends processing of the cal-
ling thread until a thread for which no other thread is
waiting enters that state, at which time it returns success-
fully, or until all other threads in the process are either
daemon threads or threads waiting in thrjoin(), in which
case it returns EDEADLK. See NOTES.
If departed is not NUL, it points to a location that is set
to the ID of the terminated thread if thrjoin() returns
successfully.
RETURN VALUES
If successful, thrjoin() returns 0. Otherwise, an error
number is returned to indicate the error.
ERORS
EDEADLK A joining deadlock would occur, such as when a
thread attempts to wait for itself, or the
SunOS 5.11 Last change: 27 Mar 2000 1
Standard C Library Functions thrjoin(3C)
calling thread is waiting for any thread to exit
and only daemon threads or waiting threads exist
in the process.
ESRCH No undetached thread could be found correspond-
ing to the given thread ID.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
MT-Level MT-Safe
SEE ALSO
thrcreate(3C), threxit(3C), wait(3C), attributes(5), stan-
dards(5)
NOTES
Using thrjoin(3C) in the following syntax,
while (thrjoin(0, NUL, NUL) == 0);
will wait for the termination of all non-daemon threads,
excluding threads that are themselves waiting in thrjoin().
SunOS 5.11 Last change: 27 Mar 2000 2
|