名 前
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.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。