Sobes.tech
Junior — Middle

Comment fonctionne le verrouillage lors de l'appel de la méthode sync sur une file d'attente séquentielle?

sobes.tech IA

Réponse de l'IA

Lors de l'appel de la méthode sync sur une file d'attente série dans GCD (Grand Central Dispatch), le thread actuel est bloqué jusqu'à ce que la tâche passée à sync soit terminée. Si sync est appelé depuis le même thread qui gère cette file, cela entraîne un blocage mutuel, car la file ne peut pas commencer une nouvelle tâche tant que la tâche en cours n'est pas terminée, et le thread attend la fin de la nouvelle tâche.

Exemple:

let serialQueue = DispatchQueue(label: "com.exemple.serial")

serialQueue.sync {
    print("Exécution de la tâche")
}
// Le thread actuel est bloqué jusqu'à la fin de la tâche

Il est important de ne pas appeler sync sur la même file série depuis une tâche de cette file pour éviter les blocages mutuels.