【问题标题】:dispatch_barrier_async equivalent in Swift 3Swift 3 中的 dispatch_barrier_async 等价物
【发布时间】:2016-06-28 19:13:37
【问题描述】:

重构一个同事的代码,我正在寻找swift 3中的dispatch_barrier_async的等价物。有很多队列在起作用,他的设计是只阻塞这个队列,并且只针对这个单一的操作。

// Swift 2.3
func subscribe(subscriber: DaoDelegate) {
  dispatch_barrier_async(self.subscribers.q) { // NOTE: barrier, requires exclusive access for write
    //...
  }
}

// Swift 3 
func subscribe(subscriber: DaoDelegate) {
  (self.subscribers.q).async { // (Not equivalent, no barrier on the concurrent queue)
    //...
  }
}

我可以在不重构所有队列类型的情况下在 Swift 3 中保留相同的功能吗?

【问题讨论】:

    标签: concurrency swift3


    【解决方案1】:

    async() 方法有一个flags 参数,它接受一个.barrier 选项:

    func subscribe(subscriber: DaoDelegate) {
      (self.subscribers.q).async(flags: .barrier) { 
        //...
      }
    }
    

    【讨论】:

    • 完美运行。刚刚从swift-users 邮件列表中得到了相同的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多