マルチスレッドpthread_join()の2つの役割
pthread_join()関数のプロトタイプ:
pthread_t thread:接続されたスレッドのスレッド番号
void**retval:接続されたスレッドの戻りコードを指すポインタ
return:
スレッド接続のステータス、0は成功、0は失敗
pthread_を呼び出すとjoin()の場合、呼び出されたスレッドが終了するまで、現在のスレッドはブロックされます.pthread_join()関数が返されると、呼び出されたスレッドは本当の意味での終了となり、呼び出されたスレッドが非分離である場合、メモリ領域も解放されます.ここで3つ注意しなければならないことがあります.が解放されたメモリ領域はシステム領域にすぎません.malloc()が割り当てた領域など、プログラムが割り当てた領域を手動でクリアする必要があります. スレッドは、1つのスレッドにのみ接続できます. 接続されているスレッドは非分離でなければなりません.そうしないと、接続にエラーが発生します.
pthread_がわかりますjoin()には2つの役割があります.他のスレッドの終了を待つために使用される:pthread_が呼び出されるとjoin()の場合、呼び出されたスレッドが終了するまで、現在のスレッドはブロックされます. スレッドのリソースを回収します.スレッドが非分離で(デフォルトで作成されたスレッドが非分離である場合)、pthread_が使用されていない場合join()の場合、スレッドが終了するとメモリ領域が解放されず、スレッドが「ゾンビスレッド」になります.
int pthread_join(pthread_t thread, void **retval);
args: pthread_t thread:接続されたスレッドのスレッド番号
void**retval:接続されたスレッドの戻りコードを指すポインタ
return:
スレッド接続のステータス、0は成功、0は失敗
pthread_を呼び出すとjoin()の場合、呼び出されたスレッドが終了するまで、現在のスレッドはブロックされます.pthread_join()関数が返されると、呼び出されたスレッドは本当の意味での終了となり、呼び出されたスレッドが非分離である場合、メモリ領域も解放されます.ここで3つ注意しなければならないことがあります.
pthread_がわかりますjoin()には2つの役割があります.