Middle+
O que acontecerá se no AppDelegate na thread principal chamar 'dispatchQueue.main.sync'?
sobes.tech IA
Resposta da IA
Ocorre um Deadlock (bloqueio mútuo).
Explicação:
AppDelegatefunciona na thread principal.dispatchQueue.main.synctenta executar código na thread principal de forma síncrona, ou seja, espera que o bloco de código termine.- Mas a thread principal já está ocupada executando
AppDelegatee espera que o bloco emsynctermine. - O bloco em
syncnão pode começar a ser executado porque a thread principal está ocupada esperando.
Resumindo, a thread principal espera que o bloco termine, e o bloco espera que a thread principal esteja livre — ocorre um deadlock. O aplicativo ficará congelado.
Exemplo de código que causará deadlock:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
print("Aplicação iniciada")
// Esta chamada causará deadlock
DispatchQueue.main.sync {
print("Este código nunca será executado")
}
print("Este código também não será atingido")
return true
}