Sobes.tech
Middle

Kokie eilės tipai egzistuoja Grand Central Dispatch (GCD)-je?

sobes.tech AI

Atsakymas iš AI

GCD naudojami keturi pagrindiniai eilės tipai:

  1. Pagrindinė eilė (Main Queue):

    • Serijinė eilė.
    • Naudojama vykdyti užduotis pagrindiniame programos sraute (UI atnaujinimai, įvykių apdorojimas).
    • Visada viena programai.
  2. Pasaulinės konkurencingos eilės (Global Concurrent Queues):

    • Konkurencingos eilės.
    • Teikiamos sistema.
    • Turi skirtingus paslaugos kokybės lygius (Quality of Service - QoS).
    • Gali vykdyti kelias užduotis vienu metu.
  3. Naudotojo sukurti serijiniai eilės (Custom Serial Queues):

    • Naudotojo sukurtos serijiniai eilės.
    • Vykdo užduotis nuosekliai, viena po kitos.
    • Idealiai tinka išteklių prieigos valdymui (sinchronizacijai).
  4. Naudotojo sukurti konkurencingos eilės (Custom Concurrent Queues):

    • Naudotojo sukurtos konkurencingos eilės.
    • Gali vykdyti kelias užduotis vienu metu.
    • Leidžia geriau kontroliuoti užduočių vykdymą, palyginti su pasaulinėmis konkurencingomis eilėmis.

Eilių kūrimo pavyzdžiai:

// Pagrindinė eilė
let mainQueue = DispatchQueue.main

// Viena iš pasaulinių konkurencingų eilių (aukšto prioriteto)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Naudotojo sukurta serijinė eilė
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Naudotojo sukurta konkurencinga eilė
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

QoS prioritetai pasaulinėms eilėms:

QoS prioritetas Aprašymas
.userInteractive Užduotys, susijusios su naudotojo sąsaja (atsakymas į paspaudimus).
.userInitiated Naudotojo inicijuotos užduotys (turinio įkėlimas pagal užklausą).
.default Numatytoji prioritetas, tarp .userInitiated ir .utility.
.utility Ilgalaikės foninės užduotys (failų atsisiuntimas).
.background Žemo prioriteto užduotys, nepriklausomos nuo naudotojo.
.unspecified Sistema nustato prioritetą.