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.