Sobes.tech
Junior

Dispatch kuyruğu nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Dispatch Kuyruğu, GCD (Grand Central Dispatch) içinde asenkron veya senkron yürütme için görevleri gönderen hafif bir nesnedir.

Kuyruk türleri:

  1. Seri (Serial): Görevleri sırasıyla, birer birer yürütür.
  2. Eşzamanlı (Concurrent): Görevleri aynı anda yürütür (sistem ve erişilebilir çekirdekler izin verdiği ölçüde).

Kuyruk elde etme yöntemleri:

  • Ana kuyruk (Main Queue): Uygulamanın ana akışına (UI) bağlı seri kuyruk.
    let mainQueue = DispatchQueue.main
    
  • Küresel eşzamanlı kuyruklar (Global Concurrent Queues): Sistem tarafından farklı QoS öncelikleriyle sağlanır.
    let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)
    
  • Kullanıcı tanımlı kuyruklar: Hem seri hem de eşzamanlı olabilir.
    let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue")
    let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
    

Görev gönderme:

  • async: Görevi kuyruğa ekler ve asenkron olarak yürütür, mevcut akışı engellemez.
    customSerialQueue.async {
        // Asenkron görev
    }
    
  • sync: Görevi kuyruğa ekler ve senkron olarak yürütür, görevin tamamlanmasını bekler ve mevcut akışı engeller.
    customSerialQueue.sync {
        // Senkron görev
    }
    
    sync kullanırken dikkatli olun, özellikle ana kuyrukta, deadlock’ları önlemek için.

Uygulamalar:

  • UI’yi engellemeden arka plan görevleri yürütmek.
  • Paylaşılan kaynaklara erişimi yönetmek (seri kuyruklar senkronizasyon için kullanılır).
  • Hesaplamaları paralelleştirmek.