NAME
pthread_exit() — cause the calling thread to terminate
SYNOPSIS
#include <pthread.h>
void pthread_exit(
void *value_ptr
);
PARAMETERS
- value_ptr
The calling thread's exit status.
DESCRIPTION
pthread_exit()
terminates the calling thread.
The calling thread returns an exit status in
value_ptr.
This value is returned to a joining thread calling
pthread_join()
on the terminating thread.
Only threads created with the
detachstate
attribute value
PTHREAD_CREATE_JOINABLE
can return an exit status to
pthread_join().
The exit status of a detached thread is lost when the thread terminates.
When a thread terminates, process-shared resources are not released.
Examples of process-shared resources include mutexes, condition variables,
semaphores, message queue descriptors, and file descriptors.
The
atexit()
routines are not called when a thread terminates as this is a process
termination action.
An implicit call to
pthread_exit()
is made when a thread returns from its start routine.
The function's return value serves as the thread's exit status (see
pthread_create(3T)).
If the main thread returns from
main()
without calling
pthread_exit(),
the process will exit using the return value from
main()
as the exit status.
If the main thread calls
pthread_exit(),
the process will continue executing until the last thread
terminates or a thread calls
exit().
After the last thread in the process terminates, the process will exit
with an exit status of zero.
Any installed cancellation
cleanup handlers will be popped and executed in
the reverse order that they were installed.
After the cancellation cleanup handlers have been executed, if the thread
has any non-NULL
thread-specific data values with associated destructor functions,
the destructor functions are called.
The order in which these destructor functions are called is unspecified.
Calling
pthread_exit()
from a cancellation cleanup handler or destructor
function that was invoked because of thread termination results in
undefined behavior.
After a thread has terminated, the result of access to local (auto) variables
of the thread is undefined.
The terminating thread should not use local variables for the
value_ptr
parameter value.
ERRORS
None, this function does not return.
AUTHOR
pthread_exit()
was derived from the IEEE POSIX P1003.1c standard.
STANDARDS CONFORMANCE
pthread_exit(): POSIX 1003.1c.