我有一个单例 NSOperationQueue 来处理我所有的网络请求。但是,我注意到,当我运行一个特别长的操作(此特定操作至少需要 25 秒)时,我的其他操作在完成之前不会运行。
maxConcurrentOperationCount 设置为 NSOperationQueueDefaultMaxConcurrentOperationCount,所以我认为这不是问题所在。
为什么会发生这种情况?除了产生多个 NSOperationQueues (我不确定是否可行的解决方案,我也不确定这是一个好主意),解决此问题的最佳方法是什么?
谢谢。
最佳答案
根据the NSOperationQueue class reference NSOperationQueueDefaultMaxConcurrentOperationCount
意思是“默认的最大操作数是由NSOperationQueue对象根据当前系统条件动态确定的”。我没有看到任何说默认值将大于 1 的内容(尤其是在单 CPU 系统上)。
尝试调用-setMaxConcurrentOperationCount:
显式设置更大的值,看看是否有帮助。
关于concurrency - iPhone : NSOperationQueue running operations serially,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726104/