Junior
Wat is een dispatch-groep?
sobes.tech AI
Antwoord van AI
Dispatch Group is een mechanisme binnen het Grand Central Dispatch (GCD) framework dat het mogelijk maakt taken te groeperen en een melding te ontvangen wanneer alle taken in de groep zijn voltooid.
Belangrijkste methoden:
enter(): Verhoogt de teller van taken in de groep. Wordt aangeroepen voordat een asynchrone taak wordt gestart.leave(): Verlaagt de teller van taken in de groep. Wordt aangeroepen nadat een asynchrone taak is voltooid.notify(queue:execute:): Registreert een codeblok dat wordt uitgevoerd op de opgegeven wachtrij nadat de teller van taken in de groep nul bereikt.wait(): Blokkeert de huidige thread totdat de teller van taken in de groep nul bereikt. Moet met voorzichtigheid worden gebruikt om te voorkomen dat de hoofdthread wordt geblokkeerd.
Voorbeeld van gebruik:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Taak 1
print("Taak 1 wordt uitgevoerd")
Thread.sleep(forTimeInterval: 2)
print("Taak 1 voltooid")
}
queue.async(group: group) {
// Taak 2
print("Taak 2 wordt uitgevoerd")
Thread.sleep(forTimeInterval: 1)
print("Taak 2 voltooid")
}
group.notify(queue: DispatchQueue.main) {
// Deze blok wordt uitgevoerd nadat alle taken zijn voltooid
print("Alle taken zijn voltooid")
}
// Om te voorkomen dat de hoofdthread onmiddellijk eindigt. In een echte applicatie wordt dit beheerd door een RunLoop
// Of wait() in het geval van synchrone wacht (niet aanbevolen in UI-applicaties)
Thread.sleep(forTimeInterval: 3)