Junior — Middle
Kas on DispatchGroup struktuur ja kuidas seda kasutatakse mitme asünkroonse ülesande täitmise sünkroniseerimiseks?
sobes.tech AI
Vastus AI-lt
DispatchGroup on mehhanism iOS-is (GCD), mis võimaldab grupeerida mitu asünkroonset ülesannet ja jälgida nende lõpetamist. See aitab sünkroniseerida täitmist, näiteks käivitada teatud kood pärast kõigi grupi ülesannete lõpetamist.
Tööpõhimõte:
- Loobakse DispatchGroup.
- Iga asünkroonne ülesanne lisatakse gruppi
enter()abil enne alustamist jaleave()abil pärast lõpetamist. - Võite kutsuda välja
notify(queue:), et saada teatis, kui kõik ülesanded grupis on lõpetatud.
Näide:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Asünkroonne ülesanne 1
print("Ülesanne 1 algas")
sleep(2)
print("Ülesanne 1 lõpetas")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Asünkroonne ülesanne 2
print("Ülesanne 2 algas")
sleep(1)
print("Ülesanne 2 lõpetas")
group.leave()
}
group.notify(queue: .main) {
print("Kõik ülesanded on lõpetatud")
}
Nii aitab DispatchGroup oodata mitme paralleelse operatsiooni lõpetamist ja seejärel käivitada järgnev kood.