我有一个后台线程正在做一堆工作 - 加载应用程序。主线程在UIProgressView上显示进度。一个线程如何确定另一个线程是否已经崩溃?
后台线程正在与performSelectorInBackground催生了(虽然我不结婚这种方法,如果采用不同的方法,使这个问题更容易解决)
[self performSelectorInBackground:@selector(loadAppInBackground) withObject:self];
一对夫妇的场合中的错误造成的后台线程崩溃(随着应用程序的发展而出现不同的错误),导致进度条停止,但用户没有明确指出任何错误。
我想要检测到这种情况,并且比简单地挂起直到用户放弃等待时更失败。
由于加载过程的持续时间可能会有很大差异,因此简单超时并不是理想的选择。
前台线程检测后台线程失败的最佳方式是什么?由于前台线程忙于处理UI,是否需要第二个后台线程来监视第一个?这看起来很难看。
是否有一些可用于“ping”后台进程的线程间通信机制?更好的是,检查其他线程状态的低级系统机制?
调试器知道所有正在运行的线程......并且似乎知道它们的状态。我想知道是否有一个电话可用于我的应用程序来做同样的事情。
你如何派遣这个背景工作(GCD,NSOperations,NSThreads)?答案取决于你的实施。 – CodaFi
[self performSelectorInBackground:@selector(loadAppInBackground)withObject:self]; –
超时是最常用的技术。因为无法确定线程是否正常运行或无限循环(暂停问题)。因此,您的前台可以检查后台任务是否在1秒内完成(本地I/O,或网络I/O的15〜60秒)。对不起,我只能提出一个模糊的建议,因为你在问一个普遍的问题。 – HKTonyLee