Junior — Middle
Czy możesz wyjaśnić, czym jest struktura DispatchGroup i jak jest używana do synchronizacji wykonywania wielu asynchronicznych zadań?
sobes.tech AI
Odpowiedź od AI
DispatchGroup to mechanizm w iOS (GCD), który pozwala grupować kilka asynchronicznych zadań i śledzić ich zakończenie. Pomaga zsynchronizować wykonanie, na przykład, aby wykonać określony kod po zakończeniu wszystkich zadań w grupie.
Zasada działania:
- Tworzy się DispatchGroup.
- Każde zadanie asynchroniczne dodaje się do grupy za pomocą
enter()przed rozpoczęciem ileave()po zakończeniu. - Można wywołać
notify(queue:), aby otrzymać powiadomienie, gdy wszystkie zadania w grupie zostaną zakończone.
Przykład:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Zadanie asynchroniczne 1
print("Zadanie 1 rozpoczęte")
sleep(2)
print("Zadanie 1 zakończone")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Zadanie asynchroniczne 2
print("Zadanie 2 rozpoczęte")
sleep(1)
print("Zadanie 2 zakończone")
group.leave()
}
group.notify(queue: .main) {
print("Wszystkie zadania zakończone")
}
W ten sposób DispatchGroup pomaga oczekiwać na zakończenie wielu równoległych operacji i wykonać kod po ich zakończeniu.