【问题标题】:How to kill all the threads which they are not the main thread?如何杀死它们不是主线程的所有线程?
【发布时间】:2015-09-11 12:56:58
【问题描述】:

我在我的应用程序中使用块执行许多异步执行。

但是如果某个事件出现在我的应用程序中,我需要杀死所有不是主线程的线程。

那么是否可以停止所有块的执行?或者换句话说,杀死所有不是主线程的线程?

PS:我尝试在 NSOperationQueue 中执行块,但是我的第一个操作没有在正确的时间开始,而以下操作开始了。

【问题讨论】:

    标签: objective-c multithreading objective-c-blocks core-foundation


    【解决方案1】:

    如果你需要杀死线程来取消操作,你可能做错了。 NSOperationQueue 或类似的解决方案(例如在您的块中实现取消逻辑)是恕我直言的正确方法。如果你对操作队列有一些问题,试着解决它,不要通过创建更糟糕的问题来避免问题。

    【讨论】:

    • 我的视图显示图片,我首先加载它们的缩略图并异步加载真实图片,一旦加载,它就会显示而不是缩略图。但是如果用户在后台加载了一张很重的照片,并且如果他滑动到下一张照片,则之前的重照片会继续在后台加载,如果新照片很轻,那么重照片的加载会在之后结束,并且它取代视图上的新照片。因此,在我的代码中,当用户滑动到下一张照片时,我尝试停止所有背景线程。那是我的问题。
    • 这是一个不需要杀死任何线程的经典用例。我建议您将图像加载实现为可取消的NSOperation,并在不再需要图像时取消图像加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2022-01-25
    • 2011-04-18
    相关资源
    最近更新 更多