PTHREAD_JOIN

Section: C Library Functions (3)
Updated: LinuxThreads
IndexJM Home Page

 

名前

pthread_join - 別のスレッドの終了を待つ

 

書式

#include <pthread.h>

int pthread_join(pthread_t th, void **thread_return);

 

説明

pthread_joinは、 呼び出しスレッドの実行を停止し、thで指定したスレッドがpthread_exit(3) を呼び出して終了するか、取り消しされて終了するのを待つ。

thread_returnNULLでないときには、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).


関連キーワード

pthread,join,PTHREAD,取り消し,エラー,return,thread,detach,exit,create 

Index

名前
書式
説明
取り消し
返り値
エラー
著者
関連項目

This document was created byman2html, using the manual pages.
Time: 20:43:08 GMT, August 08, 2017