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
}
}