Middle
O que acontece se uma chamada síncrona a si mesmo for feita no fluxo principal, e por que isso levaria a um deadlock?
sobes.tech IA
Resposta da IA
Se no thread principal de uma aplicação iOS fizer uma chamada síncrona a si mesmo, por exemplo, através de DispatchQueue.main.sync, isso levará a um deadlock.
Por que isso acontece:
- O thread principal já está ocupado a executar o código atual.
- Ao fazer uma chamada síncrona, tenta executar um bloco de código que deve ser colocado na fila do thread principal.
- Mas o thread principal não pode processar esse bloco até que o atual termine, e o atual espera a conclusão da chamada síncrona.
Como resultado, cria-se uma situação em que o thread espera a si mesmo, e a execução para para sempre.
Exemplo em Swift:
DispatchQueue.main.sync {
// Este código tenta executar-se de forma síncrona no thread principal,
// mas se a chamada vier do thread principal, ocorrerá um deadlock
}