NSOperationQueue的maxConcurrentOperationCount的默认值

问题描述 投票:26回答:2

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

是否设置为1?

ios objective-c nsoperation nsoperationqueue
2个回答
30
投票

documentation开始,

[接收者使用setMaxConcurrentOperationCount:方法。 如果没有值已明确设置,此方法返回NSOperationQueueDefaultMaxConcurrentOperationCount默认情况下

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

这是it is defined

enum {
  NSOperationQueueDefaultMaxConcurrentOperationCount = -1
};

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


0
投票

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

结论:如果您的NSOperation寿命很短,可能值得与maxConcurrentOperationCount一起玩。

© www.soinside.com 2019 - 2024. All rights reserved.