Junior — Middle
Wie funktioniert die Sperre beim Aufruf der Methode sync in einer sequenziellen Warteschlange?
sobes.tech KI
Antwort von AI
Beim Aufruf der Methode sync in einer seriellen Warteschlange in GCD (Grand Central Dispatch) wird der aktuelle Thread blockiert, bis die an sync übergebene Aufgabe ausgeführt wird. Wenn sync vom selben Thread aufgerufen wird, der diese Warteschlange bedient, entsteht eine Deadlock-Situation, da die Warteschlange keine neue Aufgabe starten kann, solange die aktuelle nicht beendet ist, und der aktuelle Thread auf das Ende der neuen Aufgabe wartet.
Beispiel:
let serialQueue = DispatchQueue(label: "com.beispiel.serial")
serialQueue.sync {
print("Aufgabe wird ausgeführt")
}
// Der aktuelle Thread ist bis zum Abschluss der Aufgabe blockiert
Es ist wichtig, sync nicht innerhalb derselben seriellen Warteschlange aus einer Aufgabe dieser Warteschlange heraus aufzurufen, um Deadlocks zu vermeiden.