【问题标题】:Skip new tasks if the queue is not empty. Swift如果队列不为空,则跳过新任务。迅速
【发布时间】:2019-04-14 14:57:16
【问题描述】:

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

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

【问题讨论】:

    标签: swift macos concurrency swift4


    【解决方案1】:

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

    小例子:

    let queue  = OperationQueue()
    queue.maxConcurrentOperationCount = 1
    
    queue.addOperation { print("?") }
    queue.addOperation { print("?") }
    queue.addOperation { print("?") }
    

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

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 1970-01-01
      • 2014-04-23
      • 2019-09-27
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      相关资源
      最近更新 更多