Sobes.tech
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 i leave() 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.