Sobes.tech
Middle

Millised järjekorratüübid on olemas Grand Central Dispatch (GCD)-s?

sobes.tech AI

Vastus AI-lt

GCD kasutab nelja peamist järjekorratüüpi:

  1. Peamine järjekord (Main Queue):

    • Sõltumatu järjekord.
    • Kasutatakse ülesannete täitmiseks rakenduse peamisel voolul (UI uuendused, sündmuste töötlemine).
    • Alati üks rakenduse kohta.
  2. Globaalsed konkurentsivõimelised järjekorrad (Global Concurrent Queues):

    • Konkurentsivõimelised järjekorrad.
    • Pakub süsteem.
    • Omavad erinevaid teenuse kvaliteedi tasemeid (Quality of Service - QoS).
    • Võivad täita mitu ülesannet samaaegselt.
  3. Kasutaja määratud järjestikused järjekorrad (Custom Serial Queues):

    • Kasutaja loodud järjestikused järjekorrad.
    • Täidavad ülesandeid järjest, üks teise järel.
    • Ideaalne ressurssidele juurdepääsu haldamiseks (sünkroniseerimine).
  4. Kasutaja määratud konkurentsivõimelised järjekorrad (Custom Concurrent Queues):

    • Kasutaja loodud konkurentsivõimelised järjekorrad.
    • Võivad täita mitu ülesannet samaaegselt.
    • Annab parema kontrolli ülesannete täitmise üle võrreldes globaalsete konkurentsivõimeliste järjekordadega.

Näited järjekordade loomise kohta:

// Peamine järjekord
let mainQueue = DispatchQueue.main

// Üks globaalsetest konkurentsivõimelistest järjekordadest (kõrge prioriteet)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Kasutaja määratud järjestikune järjekord
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Kasutaja määratud konkurentsivõimeline järjekord
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

QoS prioriteedid globaalsetele järjekordadele:

QoS prioriteet Kirjeldus
.userInteractive Ülesanded, mis on seotud kasutajaliidesega (vastus klikkidele).
.userInitiated Kasutaja algatatud ülesanded (sisu laadimine päringu alusel).
.default Vaikimisi prioriteet, vahemikus .userInitiated ja .utility.
.utility Pikaajalised taustülesanded (failide allalaadimine).
.background Madala prioriteediga ülesanded, mis ei sõltu kasutajast.
.unspecified Süsteem määrab prioriteedi.