如果队列不为空,则跳过新任务。 Swift

Skip new tasks if the queue is not empty. Swift

我有一段代码每秒向 运行 长任务发送 5-6 次垃圾邮件。每个任务都需要一些时间才能完成。我想在执行 1 时忽略所有其他任务。在它完成后,一个新的应该取代它。

Swift 4.2 中有许多用于并发的工具。什么最有效?

要解决此问题,您可以使用GCDOperation。如果您有描述,我会使用 Operation。使用这种方法,您可以对正在执行(停止、取消....)的 Operation 进行更加用户友好的控制。

小例子:

let queue  = OperationQueue()
queue.maxConcurrentOperationCount = 1

queue.addOperation { print("") }
queue.addOperation { print("") }
queue.addOperation { print("") }

在这种情况下,操作是一个一个执行的。