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:
-
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.
-
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.
-
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).
-
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. |