Junior — Middle
Puoi spiegare cos'è la struttura DispatchGroup e come viene utilizzata per sincronizzare l'esecuzione di più attività asincrone?
sobes.tech AI
Risposta dell'AI
DispatchGroup è un meccanismo in iOS (GCD) che consente di raggruppare più task asincroni e di monitorarne il completamento. Aiuta a sincronizzare l'esecuzione, ad esempio, per eseguire del codice dopo che tutti i task del gruppo sono terminati.
Principio di funzionamento:
- Si crea un DispatchGroup.
- Ogni task asincrono viene aggiunto al gruppo usando
enter()prima di iniziare eleave()dopo aver terminato. - È possibile chiamare
notify(queue:)per ricevere una notifica quando tutti i task del gruppo sono completati.
Esempio:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Task asincrono 1
print("Task 1 avviato")
sleep(2)
print("Task 1 terminato")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Task asincrono 2
print("Task 2 avviato")
sleep(1)
print("Task 2 terminato")
group.leave()
}
group.notify(queue: .main) {
print("Tutti i task sono stati completati")
}
In questo modo, DispatchGroup aiuta ad attendere il completamento di più operazioni parallele e a eseguire codice successivamente.