Junior — Middle
Ποιοι τύποι ουρών διατίθενται στο GCD και πώς διαφέρουν στη συμπεριφορά και στη χρήση;
sobes.tech AI
Απάντηση από AI
Στο GCD, διατίθενται οι ακόλουθοι τύποι ουρών:
-
Αποστειρωμένες ουρές (Serial Queues)
- Εκτελούν εργασίες με τη σειρά, η μία μετά την άλλη.
- Χρησιμοποιούνται για συγχρονισμό πρόσβασης σε πόρους και αποφυγή αγώνων.
- Μπορούν να δημιουργηθούν προσαρμοσμένες αποστειρωμένες ουρές.
-
Παράλληλες ουρές (Concurrent Queues)
- Εκτελούν πολλαπλές εργασίες ταυτόχρονα.
- Υπάρχουν παγκόσμιες παράλληλες ουρές με διαφορετικές προτεραιότητες (QoS).
- Επιτρέπουν την αποτελεσματική χρήση συστημάτων πολλαπλών επεξεργαστών.
-
Κύρια ουρά (Main Queue)
- Μία αποστειρωμένη ουρά που συνδέεται με το κύριο νήμα της εφαρμογής.
- Χρησιμοποιείται για την ενημέρωση του UI και άλλες λειτουργίες που πρέπει να εκτελούνται στο κύριο νήμα.
Διαφορές και χρήση:
- Οι αποστειρωμένες ουρές εγγυώνται τη σειρά εκτέλεσης και αποτρέπουν ταυτόχρονη πρόσβαση σε κοινά πόρους.
- Οι παράλληλες ουρές βελτιώνουν την απόδοση μέσω ταυτόχρονης εκτέλεσης εργασιών.
- Η κύρια ουρά είναι υποχρεωτική για εργασία με το UI στο iOS.
Παράδειγμα δημιουργίας και χρήσης αποστειρωμένης ουράς:
let serialQueue = DispatchQueue(label: "com.example.serial")
serialQueue.async {
// Εργασία 1
}
serialQueue.async {
// Εργασία 2, που θα εκτελεστεί μετά την Εργασία 1
}