thread(9s)thread(9s)NAME
thread - General: Contains kernel threads-related information
SYNOPSIS ----------------------------
Member Name Data Type
----------------------------
wait_result kern_return_t
----------------------------
MEMBERS
Specifies the outcome of the wait. The kernel can set this member to one of the following values: THREAD_AWAKENED, THREAD_INTERRUPTED,
THREAD_TIMED_OUT, THREAD_SHOULD_TERMINATE, and THREAD_RESTART.
DESCRIPTION
The thread data structure contains kernel threads-related information. Kernel modules typically use the wait_result member (with the cur-
rent_thread routine) to check for the result of the wait. The values associated with the wait_result member have the following meanings:
The result of the assert wait is a normal wakeup. The wait condition was interrupted by the clear_wait routine. The specified timeout has
expired. The result of the assert wait is that the current kernel thread should terminate. The current kernel thread should be restarted.
NOTES
The header file <thread.h> shows a typedef statement that assigns the alternate name thread_t for a pointer to the thread data structure.
Many of the kernel threads-related routines operate on these pointers to thread data structures.
The thread data structure is an opaque data structure; that is, all of its associated members (except for the wait_result member) are ref-
erenced and manipulated by the operating system and not by the user of kernel threads.
FILES SEE ALSO
Routines: clear_wait(9r), current_thread(9r), thread_block(9r), thread_set_timeout(9r), thread_wakeup(9r), thread_wakeup_one(9r)thread(9s)
Check Out this Related Man Page
thr_join(3C) Standard C Library Functions thr_join(3C)NAME
thr_join - wait for thread termination
SYNOPSIS
cc -mt [ flag... ] file...[ library... ]
#include <thread.h>
int thr_join(thread_t thread, thread_t *departed, void **status);
DESCRIPTION
The thr_join() function suspends processing of the calling thread until the target thread completes. The thread argument must be a member
of the current process and cannot be a detached thread. See thr_create(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 thr_join() function will not block processing of the
calling thread if the target thread has already terminated.
If a thr_join() call returns successfully with a non-null status argument, the value passed to thr_exit(3C) by the terminating thread will
be placed in the location referenced by status.
If the target thread ID is 0, thr_join() finds and returns the status of a terminated undetached thread in the process. If no such thread
exists, it suspends processing of the calling thread until a thread for which no other thread is waiting enters that state, at which time
it returns successfully, or until all other threads in the process are either daemon threads or threads waiting in thr_join(), in which
case it returns EDEADLK. See NOTES.
If departed is not NULL, it points to a location that is set to the ID of the terminated thread if thr_join() returns successfully.
RETURN VALUES
If successful, thr_join() returns 0. Otherwise, an error number is returned to indicate the error.
ERRORS
EDEADLK A joining deadlock would occur, such as when a thread attempts to wait for itself, or the 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 corresponding to the given thread ID.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|MT-Level |MT-Safe |
+-----------------------------+-----------------------------+
SEE ALSO thr_create(3C), thr_exit(3C), wait(3C), attributes(5), standards(5)NOTES
Using thr_join(3C) in the following syntax,
while (thr_join(0, NULL, NULL) == 0);
will wait for the termination of all non-daemon threads, excluding threads that are themselves waiting in thr_join().
SunOS 5.10 27 Mar 2000 thr_join(3C)