Im Prinzip führt eine serielle DispatchQueue
die übertragenen Aufgaben nacheinander aus. Was aber, wenn ein Kontextwechsel in einer Task ausgelöst wird (z. B. durch Aufruf von sleep
)? Führt die Warteschlange die nächste Aufgabe sofort aus oder wartet auf die Beendigung der aktuellen Aufgabe?Was passiert, wenn in einer seriellen DispatchQueue ein Kontextwechsel ausgelöst wird?
Für diesen Code:
q.async {
print("IN 1")
var i = 1
while i < 10 {
Thread.sleep(forTimeInterval: 0.1)
i += 1
}
print("OUT of 1")
}
q.async {
print("IN 2")
}
ist das Ergebnis:
// IN 1 -> OUT of 1 -> IN 2 ?
// or IN 1 -> IN 2 -> OUT of 1 ?
ich den Code in Spielplatz versucht laufen, aber es scheint sleep
(und Thread.sleep
) funktioniert nicht innerhalb Spielplatz.
In der Tat. Danke für den Tipp auf PlaygroundSupport! – NeoWang