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-ти эч качан негизги агымдан чакырбаңыз.