Sobes.tech
Junior — Middle

Können Sie erklären, was die DispatchGroup-Struktur ist und wie sie verwendet wird, um die Ausführung mehrerer asynchroner Aufgaben zu synchronisieren?

sobes.tech KI

Antwort von AI

DispatchGroup ist ein Mechanismus in iOS (GCD), der es ermöglicht, mehrere asynchrone Aufgaben zu gruppieren und deren Abschluss zu überwachen. Es hilft, die Ausführung zu synchronisieren, zum Beispiel, um bestimmten Code auszuführen, nachdem alle Aufgaben in der Gruppe abgeschlossen sind.

Funktionsprinzip:

  • Es wird eine DispatchGroup erstellt.
  • Jede asynchrone Aufgabe wird mit enter() vor Beginn und leave() nach Abschluss zur Gruppe hinzugefügt.
  • Man kann notify(queue:) aufrufen, um eine Benachrichtigung zu erhalten, wenn alle Aufgaben in der Gruppe beendet sind.

Beispiel:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asynchrone Aufgabe 1
    print("Aufgabe 1 gestartet")
    sleep(2)
    print("Aufgabe 1 beendet")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asynchrone Aufgabe 2
    print("Aufgabe 2 gestartet")
    sleep(1)
    print("Aufgabe 2 beendet")
    group.leave()
}

group.notify(queue: .main) {
    print("Alle Aufgaben sind abgeschlossen")
}

Auf diese Weise hilft DispatchGroup, das Beenden mehrerer paralleler Operationen abzuwarten und anschließend Code auszuführen.