問題:在跟隨此tutorial時,我爲這兩個隊列分配了不同的QoS。但是,當我運行代碼時,隊列的行爲就好像它們具有相同的優先級。此外,即使首先調用紅色點,藍色點也在紅色點之前打印。我運行了本教程提供的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