2016-06-28 22 views
20

Tái cấu trúc mã của đồng nghiệp và tôi đang tìm kiếm số tương đương dispatch_barrier_async trong nhanh chóng 3. Có rất nhiều hàng đợi khi chơi và thiết kế của anh ta là chỉ chặn hàng đợi này và chỉ cho điều này hoạt động đơn lẻ.dispatch_barrier_async tương đương trong 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) 
    //... 
    } 
} 

Tôi có thể giữ cùng chức năng đó trong Swift 3 mà không cần sắp xếp lại tất cả các loại hàng đợi không?

Trả lời

35

Phương pháp async() có một tham số flags mà chấp nhận một tùy chọn .barrier :

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

trình hoàn hảo. Chỉ có câu trả lời tương tự từ danh sách gửi thư của 'swift-users'. – SimplGy

Các vấn đề liên quan