Sobes.tech
Junior — Middle

Кай шарттарда main.sync колдонуу өз ара блоктоого алып келбейт?

sobes.tech AI

AIден жооп

DispatchQueue.main.sync-тин колдонулушу өз ара блокировка (deadlock) пайда кылбайт, эгер ал чакыруу негизги агымдан эмес болсо. Эгер сиз main.sync-ти негизги агымдан чакырсаңыз, анда ал агым блоктун аяктоосун күтөт, ал башталбайт, анткени негизги агым алгач эле иштөөдө — бул deadlock-ка алып келет.

Коопсуз колдонуу мисалы:

DispatchQueue.global().async {
    DispatchQueue.main.sync {
        // UI жаңыртуу
    }
}

Бул жерде main.sync чакыруу фон агымдан жасалган, ошондуктан блокировка пайда болбойт. Негизги эреже — DispatchQueue.main.sync-ти эч качан негизги агымдан чакырбаңыз.