Sobes.tech
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:

  1. 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.
  2. 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.
  3. Ö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.
  4. Ö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.