Junior — Middle
Milyen feltételek mellett nem okoz kölcsönös szálzárat a main.sync használata?
sobes.tech MI
Válasz az MI-től
A DispatchQueue.main.sync használata csak akkor nem okoz kölcsönös zárolást (deadlock), ha a hívás nem a fő szálról történik. Ha a main.sync-et a fő szálról hívja meg, akkor az várni fog a blokk befejezésére, amely nem kezdődhet el, mivel a fő szál már foglalt — ez deadlock-ot okoz.
Biztonságos használati példa:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// UI frissítés
}
}
Itt a main.sync hívás háttérszálról történik, így nem alakul ki zárolás. A fő szabály az, hogy soha ne hívja meg a DispatchQueue.main.sync-et a fő szálról.