Sobes.tech
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 помаже да се чека завршетак више паралелних операција и да се изврши следећи код.