kazmax - Linux で自宅サーバー

pthread_join - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 取り消し
  5. 返り値
  6. エラー
  7. 著者
  8. 関連項目

名前

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>

関連項目