Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι είναι μια δομή DispatchGroup και πώς χρησιμοποιείται για τον συγχρονισμό της εκτέλεσης πολλαπλών ασύγχρονων εργασιών;

sobes.tech AI

Απάντηση από AI

Το DispatchGroup είναι ένας μηχανισμός στο iOS (GCD) που επιτρέπει την ομαδοποίηση πολλαπλών ασύγχρονων εργασιών και την παρακολούθηση της ολοκλήρωσής τους. Βοηθά στον συγχρονισμό της εκτέλεσης, για παράδειγμα, ώστε να εκτελεστεί κάποιο κώδικα μετά την ολοκλήρωση όλων των εργασιών της ομάδας.

Αρχή λειτουργίας:

  • Δημιουργείται ένα DispatchGroup.
  • Κάθε ασύγχρονη εργασία προστίθεται στην ομάδα με enter() πριν ξεκινήσει και leave() μετά την ολοκλήρωσή της.
  • Μπορεί να καλεστεί το notify(queue:) για να λάβετε ειδοποίηση όταν όλες οι εργασίες της ομάδας ολοκληρωθούν.

Παράδειγμα:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Ασύγχρονη εργασία 1
    print("Εργασία 1 ξεκίνησε")
    sleep(2)
    print("Εργασία 1 ολοκληρώθηκε")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Ασύγχρονη εργασία 2
    print("Εργασία 2 ξεκίνησε")
    sleep(1)
    print("Εργασία 2 ολοκληρώθηκε")
    group.leave()
}

group.notify(queue: .main) {
    print("Όλες οι εργασίες ολοκληρώθηκαν")
}

Έτσι, το DispatchGroup βοηθά στην αναμονή για την ολοκλήρωση πολλαπλών παράλληλων λειτουργιών και στην εκτέλεση κώδικα μετά από αυτές.