Junior — Middle
Можете ли објаснити шта је структура DispatchGroup и како се она користи за синхронизацију извршавања више асинхроних задатака?
sobes.tech АИ
Одговор од АИ
DispatchGroup је механизам у iOS (GCD) који омогућава груписање више асинхроних задатака и праћење њиховог завршетка. Он помаже у синхронизацији извршавања, на пример, да се изврши одређени код након што сви задаци из групе заврше.
Принцип рада:
- Креира се DispatchGroup.
- Сваки асинхрони задатак се додаје у групу помоћу
enter()пре почетка иleave()након завршетка. - Може се позвати
notify(queue:)да прими обавештење када сви задаци у групи заврше.
Пример:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Асинхрона задача 1
print("Задача 1 започета")
sleep(2)
print("Задача 1 завршена")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Асинхрона задача 2
print("Задача 2 започета")
sleep(1)
print("Задача 2 завршена")
group.leave()
}
group.notify(queue: .main) {
print("Све задатке су завршене")
}
Овим начином, DispatchGroup помаже да се чека завршетак више паралелних операција и да се изврши следећи код.