maxConcurrentOperationCount = 1 的 NSOperation 和 NSOperationQueue
NSOperation and NSOperationQueue with maxConcurrentOperationCount = 1
我想用 NSOperationQueue.So 实现一个串行队列 我已经为我的 NSOperationQueue 设置了 maxConcurrentOperationCount = 1
。
现在有几个问题
现在还需要在子类 NSOperation 中设置 concurrent to YES
使其串行化吗?
如果我将 NSOperation 并发设置为 YES,虽然 maxConcurrentOperationCount 为 1,但我仍然可以同时拥有 2 个或更多 NSOperations 运行 ??
根据我阅读 Apple's documentation 的方式,NSOperation 中的 concurrent
属性 是只读的,并告诉我们该操作是否会 运行 异步。如果您计划手动启动操作,则需要为 asynchronous
设置 NSOperation return YES 以避免阻塞您启动操作的线程。 concurrent
属性 仅用于监视操作状态,如果您 运行 手动
如果您将 NSOperation
添加到 NSOperationQueue
,队列将忽略 asynchronous
属性 和 运行 操作的值到 maxConcurrentOperationCount
.
所以,回答你的问题:如果你 运行 手动操作所有操作,并将 asynchronous
设置为 YES
,则并行操作数 运行ning将取决于每次调用 start
操作之间的延迟有多大,以及完成它们需要多长时间。如果将它们添加到队列中,您的队列将 运行 作为串行队列一个接一个地执行操作。
简短的回答是否定的,如果您使用 NSOperationQueue
,则不必设置 asynchronous
属性 或检查 concurrent
。如果将它们添加到队列中,则适用队列规则。所以如果你设置 maxConcurrentOperationCount = 1
那么你将有一个串行队列。
我想用 NSOperationQueue.So 实现一个串行队列 我已经为我的 NSOperationQueue 设置了 maxConcurrentOperationCount = 1
。
现在有几个问题
现在还需要在子类 NSOperation 中设置 concurrent to YES
使其串行化吗?
如果我将 NSOperation 并发设置为 YES,虽然 maxConcurrentOperationCount 为 1,但我仍然可以同时拥有 2 个或更多 NSOperations 运行 ??
根据我阅读 Apple's documentation 的方式,NSOperation 中的 concurrent
属性 是只读的,并告诉我们该操作是否会 运行 异步。如果您计划手动启动操作,则需要为 asynchronous
设置 NSOperation return YES 以避免阻塞您启动操作的线程。 concurrent
属性 仅用于监视操作状态,如果您 运行 手动
如果您将 NSOperation
添加到 NSOperationQueue
,队列将忽略 asynchronous
属性 和 运行 操作的值到 maxConcurrentOperationCount
.
所以,回答你的问题:如果你 运行 手动操作所有操作,并将 asynchronous
设置为 YES
,则并行操作数 运行ning将取决于每次调用 start
操作之间的延迟有多大,以及完成它们需要多长时间。如果将它们添加到队列中,您的队列将 运行 作为串行队列一个接一个地执行操作。
简短的回答是否定的,如果您使用 NSOperationQueue
,则不必设置 asynchronous
属性 或检查 concurrent
。如果将它们添加到队列中,则适用队列规则。所以如果你设置 maxConcurrentOperationCount = 1
那么你将有一个串行队列。