苹果说
操作队列通常提供用于运行其操作的线程。在OS X v10.6和更高版本中,操作队列使用libdispatch库(也称为Grand Central Dispatch)来启动其操作的执行。结果,无论将操作指定为并发操作还是非并发操作,操作始终在单独的线程上执行。

据我从以上几行中了解到,NSOperationQueue可以并行执行操作,请不要考虑依赖项。

我需要知道NSOperationQueue是否真的并行启动所有操作?它会打电话吗
 一次或一次按队列顺序逐项操作的-start方法?

最佳答案

正如Tim已经回答的那样,请查看maxConcurrentOperationCount,如果将其设置为1,则将串行执行操作。

此外,如果您担心操作的执行顺序但想利用并行执行,则可以通过调用- (void)addDependency:(NSOperation *)operation来非常简单地设置NSOperation对象之间的依赖关系。

例如,您需要在操作2之前执行operation1,您将需要执行以下操作:

NSOperation *operation1;
NSOperation *operation2;
[operation2 addDependency:operation1];

关于ios - 关于NSOperationQueue工作的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18745052/

10-12 21:09