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