Junior — Middle
Cum funcționează blocarea la apelarea metodei sync pe o coadă secvențială?
sobes.tech AI
Răspuns de la AI
Când se apelează metoda sync pe o coadă serială în GCD (Grand Central Dispatch), firul de execuție curent este blocat până când sarcina transmisă în sync este finalizată. Dacă sync este apelat din același fir care gestionează această coadă, apare un deadlock, deoarece coada nu poate începe o sarcină nouă până când cea curentă nu se termină, iar firul curent așteaptă finalizarea sarcinii noi.
Exemplu:
let serialQueue = DispatchQueue(label: "com.exemplu.serial")
serialQueue.sync {
print("Executarea sarcinii")
}
// Firul curent este blocat până la finalizarea sarcinii
Este important să nu apelați sync pe aceeași coadă serială din interiorul unei sarcini a acestei cozi pentru a evita blocajele reciproce.