0

苹果表示,操作队列通常提供用于运行其操作的线程。在 OS X v10.6 及更高版本中,操作队列使用 libdispatch 库(也称为 Grand Central Dispatch)来启动其操作的执行。因此,操作总是在单独的线程上执行,无论它们被指定为并发操作还是非并发操作。

据我从上面了解到的 NSOperationQueue 并行执行操作,让我们把依赖的想法放在一边。

我需要知道 NSOperationQueue 真的是并行启动所有操作吗?它是立即调用每个操作的 -start 方法还是按队列顺序一个接一个地调用?

4

2 回答 2

1

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

此外,如果您关心操作执行的顺序但想利用并行执行,您可以通过调用- (void)addDependency:(NSOperation *)operation.

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

NSOperation *operation1;
NSOperation *operation2;
[operation2 addDependency:operation1];
于 2013-09-11T16:46:22.910 回答
0

您可能对maxConcurrentOperationCountNSOperationQueue 的属性感兴趣 - 它确定队列一次允许启动多少个任务。

于 2013-09-11T15:37:18.440 回答