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

时间:2018-11-11 20:17:46

标签: swift macos concurrency swift4

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

在Swift 4.2中有很多用于并发的工具。什么才是最好的?

1 个答案:

答案 0 :(得分:0)

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

小例子:

let queue  = OperationQueue()
queue.maxConcurrentOperationCount = 1

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

在这种情况下,操作被一个接一个地执行。