【发布时间】:2019-04-14 14:57:16
【问题描述】:
我有一段代码每秒向长时间运行的任务发送 5-6 次垃圾邮件。每个任务都需要一些时间来完成。我想在执行 1 时忽略所有其他任务。完成后,一个新的应该取代它。
在 Swift 4.2 中有很多用于并发的工具。什么最有效?
【问题讨论】:
标签: swift macos concurrency swift4
我有一段代码每秒向长时间运行的任务发送 5-6 次垃圾邮件。每个任务都需要一些时间来完成。我想在执行 1 时忽略所有其他任务。完成后,一个新的应该取代它。
在 Swift 4.2 中有很多用于并发的工具。什么最有效?
【问题讨论】:
标签: swift macos concurrency swift4
为了解决这个问题,您可以使用 GCD 或 Operation。如果您有描述,我会使用 Operation。使用这种方法,您可以对正在执行的操作(停止、取消......)进行更友好的用户控制。
小例子:
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
queue.addOperation { print("?") }
queue.addOperation { print("?") }
queue.addOperation { print("?") }
在这种情况下,操作是一个接一个地执行的。
【讨论】: