int pthread_join(pthread_t th, void **thread_return);
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 は合流されずに残ることになる。
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]