web-dev-qa-db-ja.com

分離型と結合可能なPOSIXスレッド

Cでスレッドを作成および結合するためにpthreadライブラリを使用しています。

  1. スレッドを最初から切り離して、いつ作成する必要がありますか?結合可能なスレッドと比較して、パフォーマンス上の利点はありますか?

  2. 結合可能な(デフォルトで)スレッドでpthread_join()を実行しないのは合法ですか?または、そのようなスレッドは、detach() ingの前に常にpthread_exit()関数を使用する必要がありますか?

55
user191776
  1. pthread_join()を使用して待機しないことがわかっている場合は、切り離されたスレッドを作成します。唯一のパフォーマンス上の利点は、切り離されたスレッドが終了すると、リソースが解放される前にスレッドが結合されるのを待たずに、そのリソースをすぐに解放できることです。

  2. 結合可能なスレッドに参加しないことは「合法」です。ただし、(前述のように)スレッドが結合されるまでリソースは解放されないため、通常はお勧めできません。したがって、結合しない場合は(プログラムが終了するまで)リソースは無期限に拘束されたままになります。

73