ThreadDetach(), ThreadDetach_r()

Updated: April 19, 2023

Detach a thread from a process

Synopsis:

#include <sys/neutrino.h>

int ThreadDetach( int tid );

int ThreadDetach_r( int tid );

Arguments:

tid
The ID of the thread that you want to detach, as returned by ThreadCreate(), or 0 to detach the current thread.

Library:

libc

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

Description:

These kernel calls detach the thread specified by tid. If tid is zero, the calling thread is used. Once detached, attempts to call ThreadJoin() on tid fail. When a detached thread terminates, its termination status is discarded and all its resources are released.

The ThreadDetach() and ThreadDetach_r() functions are identical, except in the way they indicate errors. See the Returns section for details.

Note: Instead of using these kernel calls directly, consider calling pthread_detach().

Blocking states

These calls don't block.

Returns:

The only difference between these functions is the way they indicate errors:

ThreadDetach()
If an error occurs, the function returns -1 and sets errno. Any other value returned indicates success.
ThreadDetach_r()
Returns EOK on success. This function does NOT set errno. If an error occurs, the function can return any value listed in the Errors section.

Errors:

EINVAL
The thread is already detached.
ESRCH
The thread indicated by tid doesn't exist.

Classification:

QNX Neutrino

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