Проблема: После этого tutorial я назначил разные QoS в 2 очереди. Однако, когда я запускал код, очереди действуют так, как будто они имеют одинаковый приоритет. Кроме того, синие точки печатаются перед красными точками, даже если сначала появляются красные точки. Я запустил код на completed project, предоставленный учебником.Очереди, не соответствующие приоритету QoS
Примечание: Когда я удалил приложение на симуляторе и перезапустил приложение, у меня было output, которое было очень близко к учебнику. Но после повторного запуска кода я получил результат ниже. Даже удаляя и снова запуская приложение, просто дает мне тот же результат.
Код
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
queuesWithQoS()
}
func queuesWithQoS() {
let queue1 = DispatchQueue(label: "com.appcoda.queue1", qos: DispatchQoS.userInitiated)
let queue2 = DispatchQueue(label: "com.appcoda.queue2", qos: DispatchQoS.utility)
queue1.async {
for i in 0..<10 {
print("", i)
}
}
queue2.async {
for i in 100..<110 {
print("", i)
}
}
}
Мой выход:
выход Учебное пособие по:
Качество обслуживания будет стремиться предпочесть более приоритетной очереди (особенно, когда в высоких ситуациях раздора), но это не гарантировано, чтобы запустить все блоки выше QOS перед началом нижнего QoS , – Rob
«Кроме того, синие точки печатаются перед красными точками, даже если красные точки называются первыми« Если вы считаете, что это важно, вы не поняли «асинхронный». – matt