【问题标题】:NSOperation cancelAllOperations takes too long to cancel operationsNSOperation cancelAllOperations 取消操作的时间太长
【发布时间】:2012-03-05 09:02:10
【问题描述】:

我有一个 NSOperationQueue,我添加了我的自定义类的对象(从 NSOperation 继承)我将“setMaxConcurrentOperationCount”设置为 1。但是当我取消所有这样的操作时:

[mOperationQueue cancelAllOperations];

有时需要大约 10 -15 秒才能全部取消。

NSOperationQueue 包含大约 60-80 个任务(操作)。

最初我取消了主线程中的操作,这显然阻塞了主线程,但现在我已经在另一个线程中完成了。但我的主要问题是它需要太长时间。 有什么建议吗?

【问题讨论】:

    标签: iphone


    【解决方案1】:

    您的操作应该检查它是否被更频繁地取消(例如,在其实现 -main 时)。

    除此之外,运行一个采样器以查看所有这些时间所花费的时间。

    【讨论】:

    • 感谢您的回答,但我认为“main”只会在“start”之后被调用,然后会检查 NSOperation 是否没有被取消,所以真的需要检查。 ?
    • @Suny 这取决于所有这些时间所花费的时间。当您的操作需要很长时间才能完成时,签入-main 很重要,您可以干净地退出-main
    猜你喜欢
    • 2011-03-03
    • 2012-09-21
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2014-08-29
    • 2021-10-29
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多