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