Sobes.tech
Middle

Ποιοι τύποι ουρών υπάρχουν στο Grand Central Dispatch (GCD);

sobes.tech AI

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

Στο GCD, χρησιμοποιούνται τέσσερις βασικοί τύποι ουρών:

  1. Κύρια ουρά (Main Queue):

    • Μια σειριακή ουρά.
    • Χρησιμοποιείται για την εκτέλεση εργασιών στο κύριο νήμα της εφαρμογής (ενημερώσεις UI, διαχείριση γεγονότων).
    • Υπάρχει πάντα μία ανά εφαρμογή.
  2. Παγκόσμιες ταυτόχρονες ουρές (Global Concurrent Queues):

    • Ταυτόχρονες ουρές.
    • Παρέχονται από το σύστημα.
    • Έχουν διάφορα επίπεδα προτεραιότητας ποιότητας υπηρεσίας (Quality of Service - QoS).
    • Μπορούν να εκτελέσουν πολλές εργασίες ταυτόχρονα.
  3. Προσαρμοσμένες σειριακές ουρές (Custom Serial Queues):

    • Οι σειριακές ουρές που δημιουργούνται από τον προγραμματιστή.
    • Εκτελούν εργασίες με σειρά, η μία μετά την άλλη.
    • Ιδανικές για διαχείριση πρόσβασης σε πόρους (συγχρονισμός).
  4. Προσαρμοσμένες ταυτόχρονες ουρές (Custom Concurrent Queues):

    • Οι ταυτόχρονες ουρές που δημιουργούνται από τον προγραμματιστή.
    • Μπορούν να εκτελέσουν πολλές εργασίες ταυτόχρονα.
    • Επιτρέπουν καλύτερο έλεγχο της εκτέλεσης εργασιών σε σύγκριση με τις παγκόσμιες ταυτόχρονες ουρές.

Παραδείγματα δημιουργίας ουρών:

// Κύρια ουρά
let mainQueue = DispatchQueue.main

// Μία από τις παγκόσμιες ταυτόχρονες ουρές (με υψηλή προτεραιότητα)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Προσαρμοσμένη σειριακή ουρά
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Προσαρμοσμένη ταυτόχρονη ουρά
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

Προτεραιότητες QoS για τις παγκόσμιες ουρές:

Προτεραιότητα QoS Περιγραφή
.userInteractive Εργασίες που σχετίζονται με το περιβάλλον χρήστη (απάντηση σε κλικ).
.userInitiated Εργασίες που ξεκινούν από τον χρήστη (φόρτωση περιεχομένου κατόπιν αιτήματος).
.default Προεπιλεγμένη προτεραιότητα, μεταξύ .userInitiated και .utility.
.utility Μακροχρόνιες εργασίες φόντου (κατέβασμα αρχείων).
.background Εργασίες χαμηλής προτεραιότητας, ανεξάρτητες από τον χρήστη.
.unspecified Το σύστημα καθορίζει την προτεραιότητα.