スレッドが終了するまでブロックします。
int pthread_join(pthread_t thread, void **value_ptr);
threadで指定したスレッドが終了するまで、現在の処理を中断します。スレッドが既に終了している場合は、すぐに次の処理へ移行します。
2つ目の引数value_ptrは、スレッドの戻り値を取得する為のポインタです。 pthread_create() に書いた通り、スレッドの関数の戻り値はvoid *です。なので、void **で戻り値を受け取るようになっています。
pthread_join()の実行が成功した時は0を、それ以外の、エラーが発生した時にはエラーに対応した値が返されます。
2つのスレッドの間で、互いのスレッドに対してpthread_join()を実行するような場合、互いが互いの終了を待ってデッドロックに陥る可能性があります。
アレゲは一日にしてならず -- アレゲ見習い