Sobes.tech
Junior — Middle

Que se passe-t-il si l'on utilise la gestion synchrone sur la file d'attente principale dans un contexte global?

sobes.tech IA

Réponse de l'IA

Si vous appelez une dispatch synchrone (par exemple, DispatchQueue.main.sync { ... }) sur la file principale depuis le thread principal, cela entraînera un blocage mutuel (deadlock).

La raison en est que la file principale est déjà occupée à exécuter le code en cours, et l'appel synchrone tente d'exécuter un bloc en attendant sa fin. Mais le bloc ne peut pas commencer tant que le code en cours n'est pas terminé, ce qui conduit à une attente infinie.

Par conséquent, il faut éviter les appels synchrones sur la file principale depuis le thread principal. À la place, utilisez des appels asynchrones (DispatchQueue.main.async { ... }), qui placent le bloc dans la file et permettent au code en cours de se terminer.