Junior — Middle
Dans quelles conditions l'utilisation de main.sync ne conduira pas à un blocage mutuel des threads?
sobes.tech IA
Réponse de l'IA
L'utilisation de DispatchQueue.main.sync ne provoquera pas de blocage mutuel (deadlock) sauf si l'appel est effectué depuis le thread principal. Si vous appelez main.sync depuis le thread principal, ce thread attendra la fin du bloc, ce qui ne peut pas commencer car le thread principal est déjà occupé — cela provoque un deadlock.
Exemple d'utilisation sûre :
DispatchQueue.global().async {
DispatchQueue.main.sync {
// Mise à jour de l'UI
}
}
Ici, l'appel à main.sync se fait depuis un thread en arrière-plan, donc il n'y a pas de blocage. La règle principale est de ne jamais appeler DispatchQueue.main.sync depuis le thread principal.