pthread_detach()
ドキュメントには次のように書かれています。
この
pthread_detach()
関数は、スレッドが終了したときにスレッドスレッドのストレージを再利用できることを実装に示します。
結合可能なスレッドを作成し、それを切り離したり結合したりしない場合、どのような結果になりますか?そのスレッドのリソースは再利用されませんか?
あなたはあなた自身の質問に答えましたか?スレッドには、システム内の特定のリソースが必要です。これらは、スレッドが結合されるか、スレッドが切り離されて終了するまで保持されます。(スレッドを切り離すまで、システムは将来いつかスレッドに参加することを想定する必要があり、リソースを解放することはできません。)
それは正しい; スレッドに参加も切り離しもしないと、リソースがリークします。
各スレッドは、スタックにメモリを割り当て、おそらくいくつかの制御構造を割り当てます。このメモリは解放されません。一部のオペレーティングシステムでは、起動できるスレッドの数に制限があり、最終的にはそれ以上起動できない状態になる可能性があります。
結合操作のために保持されるスレッドに関連付けられたリソース(つまり、ステータスコードともう少しだけ)。
「切り離された」とは、このスレッドでjoinを呼び出さないことを意味するため、スレッドが完了したときにスレッド固有のデータをクリーンアップします(joinを呼び出すことで実行されます)。