Man page - pthread_join(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

PTHREAD_JOIN

名 前
書 式
説 明
返 り 値
エ ラ ー
属 性
準 拠
注 意

関 連 項 目
こ の 文 書 に つ い て

名 前

pthread_join - 終 了 し た ス レ ッ ド を join す る

書 式

#include <pthread.h>

int pthread_join(pthread_t thread , void ** retval );

-pthread を 付 け て コ ン パ イ ル と リ ン ク を 行 う 。

説 明

pthread_join () 関 数 は 、 thread で 指 定 さ れ た ス レ ッ ド が 終 了 す る の を 待 つ 。 そ の ス レ ッ ド が す で に 終 了 し て い る 場 合 、 pthread_join () は す ぐ に 返 る 。 thread で 指 定 さ れ た ス レ ッ ド は join 可 能 で な け れ ば な ら な い 。

retval が NULL で な い 場 合 、 pthread_join () は 対 象 ス レ ッ ド の 終 了 ス テ ー タ ス (す な わ ち 、 対 象 ス レ ッ ド が pthread_exit (3) に 渡 し た 値 ) を retval が 指 す 場 所 に コ ピ ー す る 。 対 象 ス レ ッ ド が キ ャ ン セ ル さ れ た 場 合 、 retval が 指 す 場 所 に は PTHREAD_CANCELED が 格 納 さ れ る 。

複 数 の ス レ ッ ド が 同 時 に 同 じ ス レ ッ ド を join し よ う と し た 場 合 、 そ の 結 果 は 不 定 で あ る 。 pthread_join () を 呼 び 出 し て い る ス レ ッ ド が キ ャ ン セ ル さ れ た 場 合 、 対 象 ス レ ッ ド は join 可 能 の ま ま と な る (detached 状 態 に は な ら な い )。

返 り 値

成 功 す る と 、 pthread_join () は 0 を 返 す 。 エ ラ ー の 場 合 、 エ ラ ー 番 号 を 返 す 。

エ ラ ー

EDEADLK

デ ッ ド ロ ッ ク が 検 出 さ れ た (例 え ば 、 二 つ の ス レ ッ ド が 互 い に join し よ う と し た 場 合 )、 ま た は thread に 呼 び 出 し た ス レ ッ ド が 指 定 さ れ て い る 。

EINVAL

thread が join 可 能 な ス レ ッ ド で は な い 。

EINVAL

別 の ス レ ッ ド が す で に こ の ス レ ッ ド の join 待 ち で あ る 。

ESRCH

ID が thread の ス レ ッ ド が 見 つ か ら な か っ た 。

属 性

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

Image grohtml-21922-1.png

準 拠

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

注 意

After a successful call to pthread_join (), the caller is guaranteed that the target thread has terminated. The caller may then choose to do any clean-up that is required after termination of the thread (e.g., freeing memory or other resources that were allocated to the target thread).

す で に join さ れ た ス レ ッ ド を join し た 場 合 の 結 果 は 不 定 で あ る 。

join 可 能 な ス レ ッ ド (detached 状 態 で な い ス レ ッ ド ) の join に 失 敗 し た 場 合 、 "ゾ ン ビ ス レ ッ ド (zombie thread)" が 生 成 さ れ る 。 各 ゾ ン ビ ス レ ッ ド は シ ス テ ム リ ソ ー ス を い く ら か は 消 費 し 、 ゾ ン ビ ス レ ッ ド が た く さ ん 生 成 さ れ て し ま う と 、 新 し い ス レ ッ ド (や プ ロ セ ス ) が そ れ 以 上 作 成 で き な く な っ て し ま う の で 、 こ の よ う な こ と が 起 き る の は 避 け る こ と 。

pthreads に は 、 waitpid(-1, &status, 0) 、 つ ま り "終 了 さ れ た ス レ ッ ド の ど れ か を join す る " と い っ た 機 能 は な い 。 こ の 機 能 が 必 要 だ と 思 う よ う な 場 合 に は 、 お そ ら く 自 分 の ア プ リ ケ ー シ ョ ン の 設 計 を 考 え 直 す 必 要 が あ る だ ろ う 。

プ ロ セ ス 内 の 全 て の ス レ ッ ド は 対 等 で あ り 、 ど の ス レ ッ ド で も プ ロ セ ス 内 の 他 の ス レ ッ ド を join で き る 。

pthread_create (3) を 参 照 。

関 連 項 目

pthread_cancel (3), pthread_create (3), pthread_detach (3), pthread_exit (3), pthread_tryjoin_np (3), pthreads (7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。