Junior
Dispatch növbəsi nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Dispatch növbəsi, GCD (Grand Central Dispatch) daxilində asinxron və ya sinxron icra üçün tapşırıqları göndərən yüngül obyektidir.
Növbələrin növləri:
- Seriyalı (Serial): Tapşırıqları sıralı şəkildə, bir-bir icra edir.
- Eyni vaxtda (Concurrent): Tapşırıqları eyni vaxtda icra edir (sistem və mövcud nüvələr imkan verdiyi qədər).
Növbəni əldə etmənin üsulları:
- Əsas növbə (Main Queue): Uygulamanın əsas axını ilə əlaqəli seriyalı növbə.
let mainQueue = DispatchQueue.main - Qlobal eyni vaxtda növbələr (Global Concurrent Queues): Sistem tərəfindən müxtəlif QoS prioritetləri ilə təmin edilir.
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated) - Fərdi növbələr: Həm seriyalı, həm də eyni vaxtda ola bilər.
let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue") let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
Tapşırıqları göndərmək:
async: Tapşırığı növbəyə əlavə edir və asinxron şəkildə icra edir, mövcud axını bloklamır.customSerialQueue.async { // Asinxron tapşırıq }sync: Tapşırığı növbəyə əlavə edir və sinxron şəkildə icra edir, tapşırıq tamamlanana qədər mövcud axını bloklayır.customSerialQueue.sync { // Sinxron tapşırıq }syncistifadə edərkən ehtiyatlı olun, xüsusən əsas növbədə, deadlock-lardan qaçınmaq üçün.
Tətbiqlər:
- UI-ni bloklamadan arxa plan tapşırıqlarını icra etmək.
- Ümumi resurslara girişin idarə olunması (seriyalı növbələr sinxronizasiya üçün istifadə olunur).
- Hesablama işlərini paralel etmək.