Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all
名前
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 のスレッドが見つからなかった。
準拠
POSIX.1-2001.
注意
いったんスレッドを detached 状態にすると、 そのスレッドを pthread_join(3) で join したり、 もう一度 join 可能にしたりすることはできない。 pthread_attr_setdetachstate(3) を使って pthread_create(3) の attr 引き数の detached 属性を 設定することで、 新しいスレッドを detached 状態で作成することができる。 detached 属性は、スレッドが終了した際のシステムの動作を決めるだけである。 プロセスが exit(3) を使って終了した場合に、そのスレッドが終了され なくなるようなことはない (なお、メ インスレッドが return した場合も プロセスが exit(3) を使って終了した場合と全く同じであ る)。 アプリケーションが作成した各スレッドについて、そのスレッドが使用して いるシステムリソース を解放できるように、pthread_join(3) か pthread_detach() のどちらかを呼び出すべきである (た だし、プロセスが 終了するときには、全てのスレッドのリソースが解放される)。
例
以下の文は、呼び出したスレッド自身を 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 プロジェクトのリリース 3.65 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。