Sobes.tech
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:

  1. Seriyalı (Serial): Tapşırıqları sıralı şəkildə, bir-bir icra edir.
  2. 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
    }
    
    sync istifadə 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.