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:
- Seri (Serial): Görevleri sırasıyla, birer birer yürütür.
- 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 }synckullanı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.