Sobes.tech
Junior — Middle

Em que condições o uso de main.sync não levará a um bloqueio mútuo de threads?

sobes.tech IA

Resposta da IA

O uso de DispatchQueue.main.sync não causará deadlock (interbloqueio) apenas se a chamada não ocorrer a partir do thread principal. Se você chamar main.sync a partir do thread principal, esse thread aguardará a conclusão do bloco, que não pode começar, pois o thread principal já está ocupado — isso causa um deadlock.

Exemplo de uso seguro:

DispatchQueue.global().async {
    DispatchQueue.main.sync {
        // Atualização da UI
    }
}

Aqui, a chamada a main.sync ocorre a partir de uma thread de fundo, portanto, não há bloqueio. A regra principal é nunca chamar DispatchQueue.main.sync a partir do thread principal.