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) { 
    //... 
    } 
} 
+0

完美。刚刚从'swift-users'邮件列表中得到了相同的答案。 – SimplGy