pthread_join - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
pthread_join - 別のスレッドの終了を待つ
書式
#include <pthread.h>
int pthread_join(pthread_t
th
, void **
thread_return
);
説明
"pthread_join"
は、
呼び出しスレッドの実行を停止し、
"th"
で指定したスレッドが
pthread_exit
(3) を呼び出して終了するか、取り消しされて終了するのを待つ。
"thread_return"
が
"NULL"
でないときには、
"th"
の返り値が
"thread_return"
で指し示される領域に格納される。
"th"
の返り値は、
pthread_exit
(3) に与えられた引数、または
PTHREAD_CANCELED
(
"th"
が取り消しされた場合 ) である。
合流 (join) されるスレッド
"th"
は、合流可能 (joinable) な状態でなければならない。
すなわち、
pthread_detach
(3) を使用してデタッチ (detach) されていたり、
pthread_create
(3) で属性
"PTHREAD_CREATE_DETACHED"
を与えられていたりしてはならない。
合流可能なスレッドが終了しても、
別のスレッドがそのスレッドに対して
"pthread_join"
を呼び出すまでは、
そのメモリ資源 (スレッドディスクリプタとスタック) は解放されない。
したがって、メモリリークを防ぐためには、
合流可能なスレッドそれぞれに対して
"pthread_join"
を 1 回ずつ呼び出さなければならない。
あるスレッドの終了を待つことができるスレッドは高々 1 つである。
すでに別のスレッドが終了を待っているスレッド
"th"
に対して
"pthread_join"
を呼び出した場合、エラーが返る。
取り消し
"pthread_join"
は取り消しポイントである。
スレッドが
"pthread_join"
で停止しているときに取り消しされると、
直ちに実行が再開されて
スレッド
"th"
が終了するのを待つことなく取り消しが実行される。
取り消しが
"pthread_join"
で起こった場合には、
スレッド
"th"
は合流されずに残ることになる。
返り値
成功すると、
"th"
の返り値が
thread_return
で指し示された領域に格納され、0 が返る。
エラーの場合、非 0 のエラーコードが返る。
エラー
- "ESRCH"
- "th" で指定された ID に対応するスレッドが見つからなかった。
- "EINVAL"
- "th" で指定されたスレッドはすでにデタッチされている。
- "EINVAL"
- すでに別のスレッドがスレッド "th" の終了を待っている。
- "EDEADLK"
-
引数
"th"
が呼び出しスレッドを指している。
著者
Xavier Leroy <Xavier.Leroy@inria.fr>
関連項目
pthread_exit
(3),
pthread_detach
(3),
pthread_create
(3),
pthread_attr_setdetachstate
(3),
pthread_cleanup_push
(3),
pthread_key_create
(3).