dispatch_barrier_async相当于Swift 3
问题描述:
重构一个同事的代码,我在swift 3中查找dispatch_barrier_async
的等价物。有很多队列在玩,他的设计是只阻塞这个队列,并且只为了这个单一操作。dispatch_barrier_async相当于Swift 3
// 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)
//...
}
}
我能留下,在斯威夫特3相同的功能,而无需重构所有队列类型?
答
的async()
方法具有flags
参数,它接受一个.barrier
选项:
func subscribe(subscriber: DaoDelegate) {
(self.subscribers.q).async(flags: .barrier) {
//...
}
}
完美。刚刚从'swift-users'邮件列表中得到了相同的答案。 – SimplGy