正如标题所示,NSOperationQueue的maxConcurrentOperationCount的默认值是什么?
是否设置为1?
答案 0 :(得分:28)
显式设置的最大并发操作数 接收器使用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
一起玩。