Я не уверен, сломалось ли это в бета-версии xcode8 5. Посмотрите на этот код. Как вы думаете, он должен сначала напечатать «A» или «B»?
let q = DispatchQueue(label: "q", attributes: .concurrent)
q.async(flags: .barrier) {
Thread.sleep(forTimeInterval: 0.25)
print("A")
}
q.sync {
print("B")
}
Из-за .barrier я думаю, что он должен блокировать параллельную очередь и печатать «A», «B», но этого не происходит в последней бета-версии xcode.
Ошибка? Непонимание .barrier? Что вы думаете?
обратите внимание: я знаю, что это будет печатать в ожидаемом порядке, если я использую последовательную очередь - это крошечная часть гораздо большей системы, и мне нужно понять это поведение отдельно.