PTHREAD_DETACH(3)

名前
pthread_detach - スレッドを切り離す (detach する)

書式
#include <pthread.h>

int pthread_detach(pthread_t thread);

-pthread を付けてコンパイルとリンクを行う。

説明
pthread_detach() 関数は thread で識別されるスレッドに detached (切り離された状態) という印を付ける。 detached 状態のスレッドが終了すると、 別のスレッドが終了されたスレッドを join しなくても、 そのスレッドのリソースは自動的に解放されてシステムに戻される。

すでに detach 状態のスレッドを detach しようとした場合に どのような結果となるかは規定されていない。

返り値
成功すると、pthread_detach() は 0 を返す。 エラーの場合、エラー番号を返す。

エラー

EINVAL
    thread が join 可能なスレッドではない。

ESRCH
    ID が thread のスレッドが見つからなかった。

属性
この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース | 属性 | 値
pthread_detach() | Thread safety | MT-Safe

準拠
POSIX.1-2001, POSIX.1-2008.

注意
いったんスレッドを detached 状態にすると、 そのスレッドを pthread_join(3) で join したり、 もう一度 join 可能にしたりすることはできない。

pthread_attr_setdetachstate(3) を使って pthread_create(3) の attr 引数の detached 属性を設定することで、 新しいスレッドを detached 状態で作成することができる。

detached 属性は、スレッドが終了した際のシステムの動作を決めるだけである。 プロセスが exit(3) を使って終了した場合に、そのスレッドが終了され なくなるようなことはない (なお、メインスレッドが return した場合も プロセスが exit(3) を使って終了した場合と全く同じである)。

Either pthread_join(3) or pthread_detach() should be called for each thread that an application creates, so that system resources for the thread can be released. (But note that the resources of any threads for which one of these actions has not been done will be freed when the process terminates.)

例
以下の文は、呼び出したスレッド自身を detach する。

    pthread_detach(pthread_self());

関連項目
pthread_attr_setdetachstate(3), pthread_cancel(3), pthread_create(3), pthread_exit(3), pthread_join(3), pthreads(7)

この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。