Junior
Τι είναι η ομάδα αποστολής;
sobes.tech AI
Απάντηση από AI
Η Ομάδα Αποστολής (Dispatch Group) είναι ένας μηχανισμός στο πλαίσιο εργασίας Grand Central Dispatch (GCD), που επιτρέπει το ομαδοποίηση εργασιών και την λήψη ειδοποίησης όταν όλες οι εργασίες στην ομάδα έχουν ολοκληρωθεί.
Βασικές μέθοδοι:
enter(): Αυξάνει τον μετρητή των εργασιών στην ομάδα. Καλείται πριν από την έναρξη μιας ασύγχρονης εργασίας.leave(): Μειώνει τον μετρητή των εργασιών στην ομάδα. Καλείται μετά την ολοκλήρωση μιας ασύγχρονης εργασίας.notify(queue:execute:): Καταγράφει ένα μπλοκ κώδικα που θα εκτελεστεί στην καθορισμένη ουρά αφού ο μετρητής εργασιών στην ομάδα φτάσει το μηδέν.wait(): Κλειδώνει το τρέχον νήμα μέχρι ο μετρητής εργασιών στην ομάδα να φτάσει το μηδέν. Πρέπει να χρησιμοποιείται με προσοχή για να αποφευχθεί το μπλοκάρισμα του κύριου νήματος.
Παράδειγμα χρήσης:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Εργασία 1
print("Εργασία 1 σε εξέλιξη")
Thread.sleep(forTimeInterval: 2)
print("Εργασία 1 ολοκληρώθηκε")
}
queue.async(group: group) {
// Εργασία 2
print("Εργασία 2 σε εξέλιξη")
Thread.sleep(forTimeInterval: 1)
print("Εργασία 2 ολοκληρώθηκε")
}
group.notify(queue: DispatchQueue.main) {
// Αυτό το μπλοκ θα εκτελεστεί μετά την ολοκλήρωση όλων των εργασιών
print("Όλες οι εργασίες ολοκληρώθηκαν")
}
// Για να μην τερματίσει αμέσως το κύριο νήμα. Σε πραγματική εφαρμογή, αυτό διαχειρίζεται με ένα βρόχο RunLoop
// Ή με wait() σε περίπτωση συγχρονικής αναμονής (δεν συνιστάται σε εφαρμογές UI)
Thread.sleep(forTimeInterval: 3)