Man page - pthread_exit(3)

Packages contains this manual

Available languages:

en fr ja ru ro de

Manual

PTHREAD_EXIT

名 前
書 式
説 明
返 り 値
エ ラ ー
属 性
準 拠
注 意
バ グ
関 連 項 目
こ の 文 書 に つ い て

名 前

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) を 使 っ て 登 録 さ れ た 関 数 が 呼 び 出 さ れ る 。

返 り 値

こ の 関 数 は 呼 び 出 し 側 に は 返 ら な い 。

エ ラ ー

こ の 関 数 は 常 に 成 功 す る 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-35934-1.png

準 拠

POSIX.1-2001, POSIX.1-2008.

注 意

メ イ ン ス レ ッ ド 以 外 の ス レ ッ ド の 開 始 関 数 (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 プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。