Sobes.tech
Junior — Middle

Előfordulhatnak olyan esetek, amikor a fő sorban történő sync hívás használata nem vezet kölcsönös zároláshoz?

sobes.tech MI

Válasz az MI-től

A fő sorban lévő sync hívás általában kölcsönös zárolást eredményez, ha ugyanabból a fő sorból hívják, mivel várni fog a blokk befejezésére, amely nem kezdődhet el, amíg a jelenlegi be nem fejeződik. Azonban, ha a fő sorban lévő sync hívás egy másik szálból (nem a fő sorból) történik, akkor nem lesz kölcsönös zárolás, mivel a fő szál végrehajthatja a blokkot és felszabadíthatja a hívást.

Példa:

DispatchQueue.main.sync {
    // Ez a kód zárolás nélkül fog végrehajtódni, ha a hívás háttérszálból származik
}