Middle
Grand Central Dispatch (GCD) içinde hangi kuyruk türleri vardır?
sobes.tech yapay zeka
AI'dan gelen yanıt
GCD'de dört ana tür kuyruk kullanılır:
-
Ana Kuyruk (Main Queue):
- Seri kuyruk.
- Uygulamanın ana akışında görevleri yürütmek için kullanılır (UI güncellemeleri, olay işleme).
- Her uygulamada bir tane vardır.
-
Küresel Eşzamanlı Kuyruklar (Global Concurrent Queues):
- Eşzamanlı kuyruklar.
- Sistem tarafından sağlanır.
- Farklı hizmet kalitesi seviyelerine (Quality of Service - QoS) sahiptirler.
- Aynı anda birden fazla görev yürütebilirler.
-
Özelleştirilmiş Seri Kuyruklar (Custom Serial Queues):
- Geliştirici tarafından oluşturulan seri kuyruklar.
- Görevleri sıralı olarak, biri bittikten sonra diğeri başlar.
- Kaynaklara erişimi yönetmek (senkronizasyon) için idealdir.
-
Özelleştirilmiş Eşzamanlı Kuyruklar (Custom Concurrent Queues):
- Geliştirici tarafından oluşturulan eşzamanlı kuyruklar.
- Aynı anda birden fazla görev yürütebilirler.
- Görevlerin yürütülmesini daha iyi kontrol etmeye olanak tanır, küresel eşzamanlı kuyruklara kıyasla.
Kuyruk oluşturma örnekleri:
// Ana kuyruk
let mainQueue = DispatchQueue.main
// Yüksek öncelikli küresel eşzamanlı kuyruk
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// Özelleştirilmiş seri kuyruk
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// Özelleştirilmiş eşzamanlı kuyruk
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
QoS öncelikleri küresel kuyruklar için:
| QoS Önceliği | Açıklama |
|---|---|
.userInteractive |
Kullanıcı arayüzü ile ilgili görevler (tıklamalara yanıt). |
.userInitiated |
Kullanıcı tarafından başlatılan görevler (içerik yükleme). |
.default |
Varsayılan öncelik, .userInitiated ile .utility arasında. |
.utility |
Uzun süreli arka plan görevleri (dosya indirme). |
.background |
Düşük öncelikli görevler, kullanıcıdan bağımsız. |
.unspecified |
Sistem önceliği belirler. |