在申请退出之前,分离的NSThreads是否会一直完成?

时间:2013-02-06 15:27:06

标签: objective-c cocoa nsthread

当使用NSThread的{​​{1}}时,我发现如果用户在后台进程中尝试退出应用程序,则线程将在应用程序正常终止之前完全执行其执行正在执行。

在这种情况下,这是我想要的行为,但我在Apple的文档中找不到任何暗示这将始终如此的文档。我能够找到的唯一相关信息如下,来自Apple的Threading Programming Guide

  

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

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

1 个答案:

答案 0 :(得分:2)

你无法假设任何线程 - 包括主线程 - 都将正常完成执行,无论文档如何。

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

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