---
name: "pthread_detach"
section: "3thr"
platform: "linux"
package: "glibc-doc"
version: "2.1.3-20"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/pthread_detach/3thr"
---

# pthread\_detach(3thr)

put a running thread in the detached state

## NAME

pthread\_detach - put a running thread in the detached state

## SYNOPSIS

**#include \<pthread.h\>**

**int pthread\_detach(pthread\_t** *th***);**

## DESCRIPTION

**pthread\_detach** put the thread  *th* in the detached state. This guarantees that the memory resources consumed by  *th* will be freed immediately when  *th* terminates. However, this prevents other threads from synchronizing on the termination of  *th* using  **pthread\_join**.

A thread can be created initially in the detached state, using the **detachstate** attribute to  [**pthread\_create**(3)](/pthread_create/3.md). In contrast, **pthread\_detach** applies to threads created in the joinable state, and which need to be put in the detached state later.

After  **pthread\_detach** completes, subsequent attempts to perform **pthread\_join** on  *th* will fail. If another thread is already joining the thread  *th* at the time  **pthread\_detach** is called, **pthread\_detach** does nothing and leaves  *th* in the joinable state.

## RETURN VALUE

On success, 0 is returned. On error, a non-zero error code is returned.

## ERRORS

- **ESRCH**

  No thread could be found corresponding to that specified by  *th*

- **EINVAL**

  the thread  *th* is already in the detached state

## AUTHOR

Xavier Leroy \<Xavier.Leroy@inria.fr\>

## SEE ALSO

[**pthread\_create**(3)](/pthread_create/3.md), [**pthread\_join**(3)](/pthread_join/3.md), [**pthread\_attr\_setdetachstate**(3)](/pthread_attr_setdetachstate/3.md)
