Junior — Middle
У којим условима коришћење main.sync неће довести до међусобног блокирања потеза?
sobes.tech АИ
Одговор од АИ
Korišćenje DispatchQueue.main.sync neće dovesti do međusobnog blokiranja (deadlock) samo ako se poziv ne vrši iz glavnog niti. Ako pozovete main.sync iz glavnog niti, taj nit će čekati na završetak bloka, koji ne može da počne jer je glavni nit već zauzet — što izaziva deadlock.
Primer sigurnog korišćenja:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// Ažuriranje UI
}
}
Ovde, poziv main.sync dolazi iz pozadinskog niti, pa se ne javlja blokiranje. Glavno pravilo je nikada ne pozivati DispatchQueue.main.sync iz glavnog niti.