Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 接收返回的后台线程最终会关闭自身吗?_Ios_Multithreading_Multitasking - Fatal编程技术网

Ios 接收返回的后台线程最终会关闭自身吗?

Ios 接收返回的后台线程最终会关闭自身吗?,ios,multithreading,multitasking,Ios,Multithreading,Multitasking,当你点击home按钮时,如果后台线程正在运行,那么当你重新打开应用程序时,事情会暂停,然后恢复。我只是想在按下home按钮时停止操作,这样在resume上,用户就可以从头开始了。在做了一些研究之后,它看起来像一个简单的bool标志来定期检查是一种方法。我的问题是,这之后的部分。我使用一些通知(如UIApplicationWillResignActiveNotification)使标志部分正常工作,但我的问题是采取什么措施来实际停止事情。我可以做一个简单的返回来停止事情,但是这对线程本身有什么影响

当你点击home按钮时,如果后台线程正在运行,那么当你重新打开应用程序时,事情会暂停,然后恢复。我只是想在按下home按钮时停止操作,这样在resume上,用户就可以从头开始了。在做了一些研究之后,它看起来像一个简单的bool标志来定期检查是一种方法。我的问题是,这之后的部分。我使用一些通知(如UIApplicationWillResignActiveNotification)使标志部分正常工作,但我的问题是采取什么措施来实际停止事情。我可以做一个简单的返回来停止事情,但是这对线程本身有什么影响呢?作为一个一般性的问题,如果没有任何东西在运行,或者它到达了代码的末尾,线程会自动关闭吗?还是需要某种明确的退出调用?在我的粗略测试中,这个线程似乎消失了,但我不确定

如果有一个线程的入口点返回,那么该线程将关闭。如果安装runloop,线程可能永远不会关闭,这取决于您的实现。在任何情况下,当应用程序进入后台时,允许主线程完成当前的runloop运行,然后应用程序被挂起。所有其他线程也将挂起。一旦你的应用程序返回前台,或者在某些情况下在后台被唤醒,你的线程将继续工作,直到你结束入口点,暂停它或者你的应用程序再次被暂停


当然,这是一种简化。在某些情况下,线程被重用,即使您提供的入口点返回。这是线程池、GCD等的情况。在这些情况下,线程可能看起来是活动的,但实际上是挂起的,占用的资源很少。

非常感谢您的快速响应,我非常感谢!我不完全清楚如何设置“入口点”,所以只想检查并确保返回将关闭我的(没有运行循环设置)。拥有“入口点返回的线程”到底意味着什么?我在后台线程中的执行是非常连续的,并且都是以performselectorinbackground开始的。当我调试和遍历时,它会一直备份到第一次调用,所以我可以假设它会关闭吗?当您调用
performSelectorInBackground:
时,系统会为您创建一个入口点,然后从那里调用选择器。一旦选择器返回,系统实现的入口点也会返回,因为它已经完成了它的工作。好吧,很酷,我的调试显示了这一点,但不是完全确定。非常感谢。因此,当调用applicationWillResignActive时,我可以设置一个值。然后,当我的应用程序重新打开时,我可以检查该值并停止,这样事情就不会继续处理了?是的,但请确保以线程安全的方式更新该值。例如,Google about
@synchronized
。啊,好吧,在我的应用程序willresignactive中,我使用了nsuserdefaults,设置了密钥并进行了同步,我认为这是线程安全的,但这会不能正常工作吗?再次感谢您的帮助!