PTHREAD_JOIN

Section: Linux Programmer's Manual (3)
Updated: 2020-06-09
Index JM Home Page
 

名前

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) を参照。
インターフェース 属性 値
pthread_join() Thread safety MT-Safe

 

準拠

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/ に書かれている。

関連キーワード

スレッド   取り消し   合流   返り値   join   停止   領域   格納   デタッチ   メモリ   Xavier   Leroy   pthread   joinable   detach   属性   資源   スレッドディスクリプタ   スタック   解放   リーク   ポイント   再開   成功   エラーコード

Linux マニュアル 一覧

関連するコマンド・関数

pthread_detach.3   join.1   pthread_attr_getdetachstate.3   pthread_attr_setdetachstate.3   pthread_exit.3   pthread_timedjoin_np.3
 

Index

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

This document was created by man2html, using the manual pages.
Time: 04:39:32 GMT, October 11, 2026