Junior — Middle
Unter welchen Bedingungen führt die Verwendung von main.sync nicht zu einer gegenseitigen Blockierung der Threads?
sobes.tech KI
Antwort von AI
Die Verwendung von DispatchQueue.main.sync führt nur dann nicht zu einem Deadlock, wenn der Aufruf nicht vom Hauptthread erfolgt. Wenn Sie main.sync vom Hauptthread aus aufrufen, wartet dieser Thread auf den Abschluss des Blocks, der nicht gestartet werden kann, da der Hauptthread bereits beschäftigt ist — was zu einem Deadlock führt.
Sicheres Beispiel:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// UI-Update
}
}
Hier erfolgt der Aufruf von main.sync aus einem Hintergrund-Thread, daher tritt kein Deadlock auf. Die wichtigste Regel ist, niemals DispatchQueue.main.sync vom Hauptthread aus aufzurufen.