Junior — Middle
Kako funkcioniše blokada prilikom poziva metode sync na sekvencijalnoj redi?
sobes.tech АИ
Одговор од АИ
Kada pozovete metodu sync na serijskoj redi u GCD (Grand Central Dispatch), trenutni tok se blokira dok se zadatak dat sync ne završi. Ako se sync pozove iz istog toka koji upravlja tom redom, dolazi do deadlock-a, jer red ne može započeti izvršavanje novog zadatka dok trenutni ne završi, a trenutni tok čeka završetak novog zadatka.
Primer:
let serialQueue = DispatchQueue(label: "com.primjer.serial")
serialQueue.sync {
print("Izvršavanje zadatka")
}
// Trenutni tok je blokiran do završetka zadatka
Važno je ne pozivati sync na istoj serijskoj redi iznutra zadatka te redi, kako bi se izbegli međusobni blokovi.