thrd_exit()

Updated: April 19, 2023

Terminate a thread

Synopsis:

#include <threads.h>

void thrd_exit( const int res );

Arguments:

res
A value that you want to be made available to any thread joining the thread that you're terminating.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The thrd_exit() function terminates the calling thread. If the thread is joinable, the value res is made available to any thread joining the terminating thread (only one thread can get the return status). If the thread is detached, all system resources allocated to the thread are immediately reclaimed.

Before the thread is terminated, any cancellation cleanup handlers that have been pushed are popped and executed, and any thread-specific-data destructor functions are executed. Thread termination doesn't implicitly release any process resources such as mutexes or file descriptors, or perform any process-cleanup actions such as calling atexit() handlers.

An implicit call to thrd_exit() is made when a thread other than the thread in which main() was first invoked returns from the start routine that was used to create it. The return value of the start routine is used as the thread's exit status.

Note: Don't call thrd_exit() from cancellation-cleanup handlers or thread-specific-data destructor functions.

For the last process thread, thrd_exit() behaves as if you called exit(0).

Classification:

C11

Safety:  
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes