Problem: Wenn ich diesem tutorial folge, habe ich den 2 Warteschlangen unterschiedliche QoS zugewiesen. Wenn ich den Code ausführte, verhalten sich die Warteschlangen jedoch so, als hätten sie dieselbe Priorität. Ferner drucken die blauen Punkte vor den roten Punkten, obwohl die roten Punkte zuerst genannt werden. Ich habe den Code auf der completed project von der Anleitung zur Verfügung gestellt.Warteschlangen, die der QoS-Priorität nicht folgen
Hinweis: Einmal, als ich die App auf dem Simulator gelöscht und die App erneut ausgeführt habe, bekam ich eine output, die sehr nah an den Tutorials war. Aber nachdem ich den Code erneut ausgeführt habe, habe ich die Ausgabe unten erhalten. Selbst wenn ich die App erneut lösche und erneut laufe, liefere ich die gleiche Ausgabe.
-Code
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)
}
}
}
Meine Leistung:
Tutorial der Ausgabe:
Die Qualität der Dienstleistung wird dazu neigen, die Warteschlange mit höherer Priorität (insbesondere wenn sie in hohen Konkurrenzsituationen) bevorzugen, aber es garantiert wird nicht alle höheren qos Blöcke laufen, bevor sie den unteren qos beginnt . – Rob
"Außerdem werden die blauen Punkte vor den roten Punkten gedruckt, obwohl die roten Punkte zuerst aufgerufen werden." Wenn Sie das für relevant halten, haben Sie "asynchron" nicht verstanden. – matt