名称
pthread_join() ― 指定されたスレッドの終了の待ち合わせ
構文
#include <pthread.h>
int pthread_join(
pthread_t thread,
void **value_ptr
);
パラメータ
| thread | | 呼び出し元で終了を待ち合わせるスレッド。 |
| value_ptr | | thread の終了ステータスが返される領域へのポインター。 |
説明
pthread_join() 関数は、 thread の終了を待ち合わせます。 対象となる thread がすでに終了してしまっている場合、この関数はすぐに戻ります。 thread パラメータには、 detachstate 属性を PTHREAD_CREATE_JOINABLE にして作成されたスレッドだけが指定できます。 pthread_join() が正常終了すると、 value_ptr 引き数がヌルポインターでなければ、終了スレッドが pthread_exit() に渡した値が value_ptr 引き数で示される領域に設定されます。
pthread_join() 呼び出しが正常終了した時点では、対象スレッドは必ず終了しています。
同じスレッドに対して複数のスレッドが pthread_join() を呼び出した場合、その中の 1 つのスレッドに対してだけ正常終了することが保証されます。
同じスレッドを指定して pthread_join() を呼び出したその他の呼び出し元の動作は、規定されません。
pthread_join() を呼び出したスレッドが取り消されると、対象スレッドは結合されません。 thread の終了ステータスは、 pthread_join() を呼び出す別のスレッドで使用できるよう維持されます。
thread が取り消された場合、その終了ステータスは PTHREAD_CANCELED になります。
スレッドの実行は終了しているが、まだ結合していない場合、 {_POSIX_THREAD_THREADS_MAX} と比較する値に含まれるかどうかは規定されません。
戻り値
正常終了すると pthread_join() はゼロを返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
次の場合、 pthread_join() 関数は、対応するエラー番号を返します。
| [EINVAL] | | thread で指定された値が、結合可能なスレッドを示していない場合。 |
| [ESRCH] | | thread に対応するスレッドが見つからない場合。 |
次の条件が成立する場合、 pthread_join() 関数は、対応するエラー番号を返します。
| [EDEADLK] | | この操作を行うとプロセスがデッドロックする場合、または thread に呼び出し元自身が指定されている場合。 |
著者
pthread_join() は、IEEE POSIX P1003.1c 標準から派生しました。
標準準拠
pthread_join(): POSIX 1003.1c.