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/
に書かれている。