Operation 和 OperationQueues 的同步和异步状态
sync and async status of Operation and OperationQueues
我正在阅读有关 OperationQueue 的文档。
我有这个疑问,我们正在创建的操作、BlockOperation 和 OperationQueue 的同步和异步状态是什么。
据我了解,它将 运行 作为同步操作,但如果我们想以异步方式 运行 它,我们必须使用 [=18] 以异步方式分派它=].
我理解的对吗?
当您提交块到 BlockOperation
returns(或 main
方法,如果您子类化 Operation
时,同步操作将被视为由 OperationQueue
完成)
异步操作(即从其 isAsynchronous
属性 返回 true
),必须通过设置 [=17] 在 Operation
的子类中手动标记为已完成=](同时设置isExecuting = false
)。这允许您使用 Dispatch.async
将您需要做的任何工作分派到不同的队列,但仍将操作保留在 OperationQueue
中。这对于构建依赖操作或仅允许并行 运行 的特定数量的操作很有用。
Apple 的 Operation docs 对所有这些都有很好的解释。
我正在阅读有关 OperationQueue 的文档。
我有这个疑问,我们正在创建的操作、BlockOperation 和 OperationQueue 的同步和异步状态是什么。
据我了解,它将 运行 作为同步操作,但如果我们想以异步方式 运行 它,我们必须使用 [=18] 以异步方式分派它=].
我理解的对吗?
当您提交块到 BlockOperation
returns(或 main
方法,如果您子类化 Operation
时,同步操作将被视为由 OperationQueue
完成)
异步操作(即从其 isAsynchronous
属性 返回 true
),必须通过设置 [=17] 在 Operation
的子类中手动标记为已完成=](同时设置isExecuting = false
)。这允许您使用 Dispatch.async
将您需要做的任何工作分派到不同的队列,但仍将操作保留在 OperationQueue
中。这对于构建依赖操作或仅允许并行 运行 的特定数量的操作很有用。
Apple 的 Operation docs 对所有这些都有很好的解释。