Cでスレッドを作成および結合するためにpthread
ライブラリを使用しています。
スレッドを最初から切り離して、いつ作成する必要がありますか?結合可能なスレッドと比較して、パフォーマンス上の利点はありますか?
結合可能な(デフォルトで)スレッドでpthread_join()
を実行しないのは合法ですか?または、そのようなスレッドは、detach()
ingの前に常にpthread_exit()
関数を使用する必要がありますか?
pthread_join()
を使用して待機しないことがわかっている場合は、切り離されたスレッドを作成します。唯一のパフォーマンス上の利点は、切り離されたスレッドが終了すると、リソースが解放される前にスレッドが結合されるのを待たずに、そのリソースをすぐに解放できることです。
結合可能なスレッドに参加しないことは「合法」です。ただし、(前述のように)スレッドが結合されるまでリソースは解放されないため、通常はお勧めできません。したがって、結合しない場合は(プログラムが終了するまで)リソースは無期限に拘束されたままになります。