Junior
Τι είναι η ουρά Dispatch;
sobes.tech AI
Απάντηση από AI
Η ουρά Dispatch είναι ένα ελαφρύ αντικείμενο που στέλνει εργασίες για ασύγχρονη ή συγχρονική εκτέλεση στο GCD (Grand Central Dispatch).
Τύποι ουρών:
- Σειριακές (Serial): Εκτελούν εργασίες αυστηρά με τη σειρά, μία μετά την άλλη.
- Παράλληλες (Concurrent): Εκτελούν εργασίες ταυτόχρονα (όσο επιτρέπει το σύστημα και οι διαθέσιμοι πυρήνες).
Τρόποι απόκτησης ουράς:
- Κύρια ουρά (Main Queue): Μια σειριακή ουρά που συνδέεται με το κύριο νήμα της εφαρμογής (UI).
let mainQueue = DispatchQueue.main - Παγκόσμιες παράλληλες ουρές (Global Concurrent Queues): Παρέχονται από το σύστημα με διαφορετικές προτεραιότητες QoS.
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated) - Προσαρμοσμένες ουρές: Μπορούν να είναι τόσο σειριακές όσο και παράλληλες.
let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue") let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
Αποστολή εργασιών:
async: Προσθέτει μια εργασία στην ουρά για ασύγχρονη εκτέλεση, χωρίς να μπλοκάρει το τρέχον νήμα.customSerialQueue.async { // Ασύγχρονη εργασία }sync: Προσθέτει μια εργασία στην ουρά για συγχρονική εκτέλεση, μπλοκάροντας το τρέχον νήμα μέχρι να ολοκληρωθεί.Χρησιμοποιήστε τοcustomSerialQueue.sync { // Συγχρονική εργασία }syncμε προσοχή, ειδικά στην κύρια ουρά, για να αποφύγετε deadlocks.
Εφαρμογές:
- Εκτέλεση εργασιών φόντου χωρίς να μπλοκάρει το UI.
- Διαχείριση πρόσβασης σε κοινόχρηστους πόρους (οι σειριακές ουρές χρησιμοποιούνται για συγχρονισμό).
- Παραλληλοποίηση υπολογισμών.