Sobes.tech
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 e leave() 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.