concurrency - iPhone : NSOperationQueue running operations serially

标签 concurrency multithreading nsoperation nsoperationqueue

我有一个单例 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/

相关文章:

ruby-on-rails - 限制循环中线程数的最简单方法?

java - Swing repaint() 在循环或线程中不起作用

java - 使线程终止并编程结束执行时出现问题

android - 使用 MediaCodec 录制 720p 视频但编码视频的 fps 太低

ios - NSOperationQueue 不限制并发操作

go - 修改 goroutine 中的结构?

c# - 如何避免捕获变量?

kotlin - 首次运行时未定义的迭代器值

iphone - 使用 NSOperationQueue 作为 View Controller 实例变量

ios - 使用 NSOperationQueue,如何添加到后台队列而不是主队列,以及如何控制操作量?