2

在多线程 Linux 应用程序之一中,应用程序退出而不删除线程。这会导致任何线程资源泄漏。如果在一天中多次启动此应用程序,系统会崩溃吗?

4

2 回答 2

4

在大多数情况下,当程序存在时,程序使用的所有资源都会被清除。有一些例外(这里是部分列表,毫无疑问):

  • 创建的文件(呃!)
  • TCP 套接字在程序退出后可能需要几分钟才能完全清理(例如,TIME_WAIT 套接字)
  • SysV 共享内存、信号量和消息队列(使用 ipcs/ipcrm 手动清理)

除此之外,几乎所有东西都被清理干净了。包括线程。

当然,您应该对此进行测试。

于 2009-02-25T06:24:46.987 回答
3

内核通常会在退出时清理进程的资源(打开的文件、线程、分配的内存等),所以我认为您不必担心。尽管在风格上明确删除线程可能会更好,这可能取决于您喜欢的编码风格。

于 2009-02-25T06:23:23.073 回答