名 前
pthread_exit − 呼 び 出 し た ス レ ッ ド を 終 了 す る
書 式
#include <pthread.h>
void pthread_exit(void *retval);
−pthread で コ ン パ イ ル し て リ ン ク す る 。
説 明
pthread_exit() 関 数 は 、 呼 び 出 し た ス レ ッ ド を 終 了 し 、 retval 経 由 で 値 を 返 す 。 こ の 値 は (そ の ス レ ッ ド が join 可 能 な 場 合 に ) pthread_join(3) を 呼 び 出 し た 同 じ プ ロ セ ス 内 の 別 の ス レ ッ ド が 参 照 で き る 値 と 同 じ で あ る 。
pthread_cleanup_push(3) で 設 定 さ れ た ク リ ー ン ア ッ プ ハ ン ド ラ ー の う ち 、 ま だ pop (取 り 出 さ れ て い な い ) ハ ン ド ラ ー を (push さ れ た の と 逆 の 順 序 で ) 取 り 出 し て 実 行 す る 。 そ の ス レ ッ ド が ス レ ッ ド 固 有 の デ ー タ を 持 っ て い る 場 合 は 、 ク リ ー ン ア ッ プ ハ ン ド ラ ー が 実 行 さ れ た 後 に 、 ス レ ッ ド 固 有 の デ ー タ に 対 応 す る デ ス ト ラ ク タ (destructor) 関 数 が 呼 び 出 さ れ る (呼 び 出 し 順 序 は 規 定 さ れ て い な い )。 ス レ ッ ド が 終 了 す る 際 に 、 プ ロ セ ス の 共 有 リ ソ ー ス (例 え ば 、 mutex、 状 態 変 数 (condition variables)、 セ マ フ ォ 、 フ ァ イ ル デ ィ ス ク リ プ タ ー )が 解 放 さ れ る 。 atexit(3) を 使 っ て 登 録 さ れ た 関 数 は 呼 び 出 さ れ な い 。 プ ロ セ ス の 最 後 の ス レ ッ ド が 終 了 す る と 、 そ の プ ロ セ ス は 、 終 了 ス テ ー タ ス 0 で exit(3) を 呼 び 出 し た 場 合 と 全 く 同 じ よ う に 終 了 す る 。 し た が っ て 、 プ ロ セ ス の 共 有 リ ソ ー ス は 解 放 さ れ 、 atexit(3) を 使 っ て 登 録 さ れ た 関 数 が 呼 び 出 さ れ る 。
返 り 値
こ の 関 数 は 呼 び 出 し 側 に は 返 ら な い 。
エ ラ ー
こ の 関 数 は 常 に 成 功 す る 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 )
pthread_exit() 関 数 は ス レ ッ ド セ ー フ で あ る 。
準 拠
POSIX.1−2001.
注 意
メ イ ン ス レ ッ ド 以 外 の ス レ ッ ド の 開 始 関 数 (start function) が return を 行 う と 、 暗 黙 の う ち に pthread_exit() が 呼 び 出 さ れ 、 関 数 の 返 り 値 が ス レ ッ ド の 終 了 ス テ ー タ ス と し て 使 用 さ れ る 。 他 の ス レ ッ ド が 実 行 を 継 続 で き る よ う に 、 メ イ ン ス レ ッ ド は exit(3) で は な く pthread_exit() を 呼 び 出 し て 終 了 す べ き で あ る 。
retval が 指 す 値 は 、 呼 び 出 し た ス レ ッ ド の ス タ ッ ク に 置 く べ き で は な い 。 呼 び 出 し た ス レ ッ ド が 終 了 し た 後 は 、 そ の ス タ ッ ク の 内 容 が 不 定 と な る か ら で あ る 。
バ グ
現 在 の と こ ろ 、 停 止 (stop) さ れ た ス レ ッ ド グ ル ー プ を 、 す で に 終 了 し た (dead) ス レ ッ ド グ ル ー プ リ ー ダ ー で wait(2) す る 場 合 の 、 カ ー ネ ル 実 装 の 論 理 に は 制 限 が あ る 。 こ の 制 限 は 、 す で に ス レ ッ ド グ ル ー プ リ ー ダ ー が pthread_exit() を 呼 び 出 し て い る よ う な フ ォ ア グ ラ ウ ン ド プ ロ セ ス に ス ト ッ プ シ グ ナ ル が 送 信 さ れ た 場 合 に 、 端 末 が ロ ッ ク さ れ て し ま う 、 と い っ た 問 題 と し て 表 に 見 え る 場 合 が あ る 。
関 連 項 目
pthread_create(3), pthread_join(3), pthreads(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。