0

使用NSThread'sdetachNewThreadSelector:toTarget:withObject:时,我发现如果用户在后台进程执行时尝试退出应用程序,线程将在应用程序正常终止之前完全完成其执行。

在这种情况下,这是我想要的行为,但我在 Apple 的文档中找不到任何表明这种情况永远存在的内容。我能找到的唯一相关信息如下,来自 Apple 的Threading Programming Guide

重要提示:在应用程序退出时,分离的线程可以立即终止,但可连接的线程不能。在允许进程退出之前,必须加入每个可连接线程。因此,在线程正在执行不应中断的关键工作(例如将数据保存到磁盘)的情况下,可连接线程可能更可取。

因此,我知道分离线程可以在应用程序退出时终止,但它们会自动终止吗?或者,我是否总是可以安全地假设线程将在应用程序退出之前完成其执行?

4

1 回答 1

2

无论文档如何,您都不能假设任何线程(包括主线程)都会正常完成执行。

这是因为用户可以随时退出应用程序,系统可能会断电/恐慌,或者应用程序可能会崩溃。

至于分离线程,一旦主事件循环放弃幽灵,系统框架在超时一段时间后自动强制终止应用程序并不是闻所未闻的。

于 2013-02-06T17:01:45.903 回答