Middle+
Que se passera-t-il si dans AppDelegate sur le thread principal on appelle 'dispatchQueue.main.sync' ?
sobes.tech IA
Réponse de l'IA
Un deadlock (blocage mutuel) se produira.
Explication:
AppDelegatefonctionne sur le thread principal.dispatchQueue.main.synctente d'exécuter du code sur le thread principal synchroniquement, c'est-à-dire en attendant la fin de l'exécution du bloc.- Mais le thread principal est déjà occupé à exécuter
AppDelegateet attend que le bloc danssyncse termine. - Le bloc dans
syncne peut pas commencer à s'exécuter car le thread principal est occupé à attendre.
En résumé, le thread principal attend la fin du bloc, et le bloc attend que le thread principal soit libre — un deadlock se produit. L'application se bloquera.
Exemple de code qui provoquera un deadlock:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
print("Application démarrée")
// Cet appel provoquera un deadlock
DispatchQueue.main.sync {
print("Ce code ne sera jamais exécuté")
}
print("Ce code ne sera pas atteint non plus")
return true
}