Sobes.tech
Middle

Main ve globalde kullanılan kuyruk türleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ana sıra (Main queue), uygulamanın ana akışında (main thread) çalışan sıralı (seri sıra) bir kuyruktur. Kullanıcı arayüzünü güncellemek ve UI olaylarını işlemek için kullanılır. Ana kuyruğa gönderilen tüm görevler kesinlikle sıralı olarak yürütülür.

Global kuyruklar (Global queues), sistem tarafından sağlanan paralel (eş zamanlı) kuyruklardır. UI ile ilgisi olmayan arka plan görevlerini yürütmek için kullanılırlar ve bu, ana iş parçacığının kilitlenmesini önler. Farklı QoS (Hizmet Kalitesi) önceliklerine sahip birkaç global kuyruk vardır.

İşte QoS önceliğine göre temel global kuyruk türlerinin bir tablosu:

QoS Önceliği Açıklama Kullanım Örneği
userInteractive En yüksek öncelik. UI'nin anlık etkileşimi için gereken görevlerde kullanılır. Animasyonlar, dokunma olaylarının işlenmesi.
userInitiated Yüksek öncelik. Kullanıcı tarafından doğrudan başlatılan ve hızlı sonuçlar gerektiren görevlerde kullanılır. Arama sonuçlarının gösterimi, içerik yükleme.
default Varsayılan öncelik. userInitiated ve utility arasında. Öncelik açıkça belirtilmeyen görevler.
utility Orta öncelik. Uzun süren ve arka planda çalışan görevler için kullanılır. Dosya yükleme, veri işleme.
background Düşük öncelik. Kullanıcı ilgisi gerektirmeyen arka plan görevleri için kullanılır. Veri senkronizasyonu, yedekleme.
unspecified Belirtilmemiş öncelik. Sistem, diğer faktörlere göre belirler. Nadiren kullanılır.

İşte ana ve global kuyruklara görev gönderme örneği:

DispatchQueue.main.async {
    // UI güncelleme kodu
}

DispatchQueue.global(qos: .userInitiated).async {
    // Yüksek öncelikli arka plan görevi kodu
    // Tamamlandıktan sonra UI'yi güncellemek için ana kuyruğa dönmek gerekebilir
    DispatchQueue.main.async {
        // Arka plan görevi tamamlandıktan sonra UI güncellemesi
    }
}