Middle+
¿Qué sucederá si en AppDelegate en el hilo principal se llama a 'dispatchQueue.main.sync'?
sobes.tech AI
Respuesta de la IA
Ocurre un Deadlock (bloqueo mutuo).
Explicación:
AppDelegatefunciona en el hilo principal.dispatchQueue.main.syncintenta ejecutar código en el hilo principal de forma síncrona, es decir, espera a que el bloque de código termine.- Pero el hilo principal ya está ocupado ejecutando
AppDelegatey espera a que el bloque ensynctermine. - El bloque en
syncno puede comenzar a ejecutarse porque el hilo principal está ocupado esperando.
En resumen, el hilo principal espera a que termine el bloque, y el bloque espera que el hilo principal esté libre — se produce un bloqueo mutuo. La aplicación se congelará.
Ejemplo de código que provocará Deadlock:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
print("Aplicación iniciada")
// Esta llamada provocará Deadlock
DispatchQueue.main.sync {
print("Este código nunca se ejecutará")
}
print("Este código tampoco se alcanzará")
return true
}