Concurrency iPhone:NSOperationQueue连续运行操作

Concurrency iPhone:NSOperationQueue连续运行操作,concurrency,multithreading,nsoperation,nsoperationqueue,Concurrency,Multithreading,Nsoperation,Nsoperationqueue,我有一个singleton NSOperationQueue,它处理我的所有网络请求。然而,我注意到,当我运行一个特别长的操作(这个操作至少需要25秒)时,我的其他操作直到完成才运行 maxConcurrentOperationCount设置为NSOperationQueueDefaultMaxConcurrentOperationCount,因此我认为这不是问题所在 为什么会发生这种情况?除了产生多个NSOperationQueues(我不确定这个解决方案是否可行,也不确定它是否是一个好主意)

我有一个singleton NSOperationQueue,它处理我的所有网络请求。然而,我注意到,当我运行一个特别长的操作(这个操作至少需要25秒)时,我的其他操作直到完成才运行

maxConcurrentOperationCount设置为NSOperationQueueDefaultMaxConcurrentOperationCount,因此我认为这不是问题所在

为什么会发生这种情况?除了产生多个NSOperationQueues(我不确定这个解决方案是否可行,也不确定它是否是一个好主意),解决这个问题的最佳方法是什么

谢谢。

根据
NSOperationQueueDefaultMaxConcurrentOperationCount
的说法,这意味着“默认的最大操作数是由NSOperationQueue对象根据当前的系统条件动态确定的。”我没有看到任何东西表明默认值将大于1(特别是在单CPU系统上)


尝试调用
-setMaxConcurrentOperationCount:
以显式设置一个更大的值,看看这是否有帮助。

我将其设置为一个显式更大的值(4),这确实解决了问题。这很让人困惑,因为根据文档,将其设置为NSOperationQueueDefaultMaxConcurrentOperationCount(其值为-1)应该可以将并发性提高到尽可能高的程度。即使在iPhone上,也没有理由认为该值实际上不允许多线程。我遇到了同样的问题,默认值允许在模拟器中进行并发操作,但在设备上连续执行操作。悬赏以获得更多答案。