Sobes.tech
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.