Sobes.tech
Junior

Kas yra Dispatch eilė?

sobes.tech AI

Atsakymas iš AI

Eiliškumas Dispatch yra lengvas objektas, siunčiantis užduotis asinchroniniam arba sinchroniniam vykdymui GCD (Grand Central Dispatch).

Eilių tipai:

  1. Serijiniai (Serial): Atlieka užduotis griežtai pagal tvarką, po vieną.
  2. Paraleliniai (Concurrent): Atlieka užduotis vienu metu (kiek leidžia sistema ir prieinami procesoriaus branduoliai).

Eilių gavimo būdai:

  • Pagrindinė eilė (Main Queue): Serijinė eilė, susijusi su pagrindiniu programos srautu (UI).
    let mainQueue = DispatchQueue.main
    
  • Globalios paralelinės eilės (Global Concurrent Queues): Sistema teikia su skirtingais paslaugų kokybės prioritetais (QoS).
    let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)
    
  • Vartotojo sukurti eilės: Gali būti tiek serijiniai, tiek paraleliniai.
    let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue")
    let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
    

Užduočių siuntimas:

  • async: Prideda užduotį į eilę asinchroniniam vykdymui, neblokuojant dabartinio srauto.
    customSerialQueue.async {
        // Asinchroninė užduotis
    }
    
  • sync: Prideda užduotį į eilę sinchroniniam vykdymui, blokuojant dabartinį srautą iki užduoties pabaigos.
    customSerialQueue.sync {
        // Sinchroninė užduotis
    }
    
    Naudokite sync atsargiai, ypač pagrindinėje eilėje, kad išvengtumėte užšalimo.

Pritaikymas:

  • Fono užduočių vykdymas be UI blokavimo.
  • Prieigos valdymas prie bendrų išteklių (serijiniai eilės naudojamos sinchronizacijai).
  • Skaičiavimų paralelizavimas.