NSOperationQueue的默认值maxConcurrentOperationCount

时间:2013-02-21 06:19:24

标签: ios objective-c nsoperation nsoperationqueue

正如标题所示,NSOperationQueue的maxConcurrentOperationCount的默认值是什么?

是否设置为1?

2 个答案:

答案 0 :(得分:28)

来自documentation

  

显式设置的最大并发操作数   接收器使用setMaxConcurrentOperationCount:方法。 如果没有价值   已经显式设置,此方法返回   默认情况下为NSOperationQueueDefaultMaxConcurrentOperationCount

所以它是NSOperationQueueDefaultMaxConcurrentOperationCount。如果设置了此选项,它将根据可用处理器的数量和其他相关因素选择适当的值。

这就是it is defined

的方式
enum {
  NSOperationQueueDefaultMaxConcurrentOperationCount = -1
};
  

NSOperationQueueDefaultMaxConcurrentOperationCount:   默认的最大操作数由动态确定   NSOperationQueue对象基于当前系统条件。

答案 1 :(得分:1)

在我的一个应用中,我一次向NSOperation中添加了约3.5万个NSOperationQueue实例。如果将maxConcurrentOperationCount设置为64,则与默认值相比,我可以获得大约20倍的性能。 CPU负载从〜120%上升到400%,这似乎表明默认值是如此之高,以至于CPU大部分时间都在忙于处理操作队列开销。

结论:如果您的NSOperation短命很多,那么值得与maxConcurrentOperationCount一起玩。