Sobes.tech
Junior — Middle

Можете ли да обясните какво е структурата DispatchGroup и как се използва за синхронизиране на изпълнението на няколко асинхронни задачи?

sobes.tech AI

Отговор от AI

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 помага да се изчака завършването на няколко паралелни операции и да се изпълни последващ код.