Junior — Middle
Hoe kun je het moment bepalen waarop alle asynchrone taken in een wachtrij die gebruikmaakt van concurrerende mechanismen, voltooid zijn?
sobes.tech AI
Antwoord van AI
Op iOS, om het moment te bepalen waarop alle asynchrone taken in een wachtrij die gebruikmaakt van concurrerende mechanismen (bijvoorbeeld DispatchQueue) zijn voltooid, wordt vaak DispatchGroup gebruikt.
DispatchGroup stelt je in staat om meerdere asynchrone taken te groeperen en een melding te ontvangen wanneer ze allemaal zijn voltooid. Voorbeeld van gebruik:
let group = DispatchGroup()
for task in tasks {
group.enter() // informeer de groep over het begin van een taak
DispatchQueue.global().async {
// voer een asynchrone taak uit
task()
group.leave() // informeer de groep over het einde van een taak
}
}
group.notify(queue: DispatchQueue.main) {
print("Alle taken zijn voltooid")
}
Op deze manier wordt group.notify aangeroepen wanneer alle taken die met de groep verbonden zijn, zijn voltooid. Dit is een betrouwbare manier om het einde van alle asynchrone operaties in een gelijktijdige omgeving te volgen.