Sobes.tech
Junior — Middle

Kunt u uitleggen wat een DispatchGroup-structuur is en hoe deze wordt gebruikt om de uitvoering van meerdere asynchrone taken te synchroniseren?

sobes.tech AI

Antwoord van AI

DispatchGroup is een mechanisme in iOS (GCD) waarmee je meerdere asynchrone taken kunt groeperen en hun voltooiing kunt volgen. Het helpt bij het synchroniseren van de uitvoering, bijvoorbeeld om bepaalde code uit te voeren nadat alle taken in de groep zijn voltooid.

Werking:

  • Er wordt een DispatchGroup aangemaakt.
  • Elke asynchrone taak wordt aan de groep toegevoegd met enter() voordat deze begint en leave() nadat deze is voltooid.
  • Je kunt notify(queue:) aanroepen om een melding te ontvangen wanneer alle taken in de groep zijn voltooid.

Voorbeeld:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asynchrone taak 1
    print("Taak 1 gestart")
    sleep(2)
    print("Taak 1 voltooid")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asynchrone taak 2
    print("Taak 2 gestart")
    sleep(1)
    print("Taak 2 voltooid")
    group.leave()
}

group.notify(queue: .main) {
    print("Alle taken zijn voltooid")
}

Op deze manier helpt DispatchGroup om te wachten op de voltooiing van meerdere parallelle operaties en vervolgens code uit te voeren.