2

マルチスレッド Linux アプリケーションの 1 つで、スレッドを削除せずにアプリケーションが終了します。これにより、スレッド リソースのリークが発生しますか。このアプリケーションを 1 日のうちに何度も起動すると、システムがクラッシュしますか?

4

2 に答える 2

4

ほとんどの場合、プログラムが使用するすべてのリソースは、プログラムが存在するときにクリーンアップされます。いくつかの例外があります (ここでは部分的なリストです。間違いありません)。

  • 作成されたファイル (当たり前!)
  • プログラムの終了後、TCP ソケットが完全にクリーンアップされるまでに数分かかる場合があります (TIME_WAIT ソケットなど)。
  • SysV 共有メモリ、セマフォ、およびメッセージ キュー (ipcs/ipcrm を使用して手動でクリーンアップ)

それ以外は、ほとんどすべてがクリーンアップされています。スレッドを含む。

当然、これをテストする必要があります。

于 2009-02-25T06:24:46.987 に答える
3

カーネルは通常、終了時にプロセスのリソース (開いているファイル、スレッド、割り当てられたメモリなど) をクリーンアップするので、心配する必要はないと思います。好みのコーディング スタイルによっては、スレッドを明示的に削除する方がスタイル的に優れている場合もあります。

于 2009-02-25T06:23:23.073 に答える