Middle
Kokie eilės tipai egzistuoja Grand Central Dispatch (GCD)-je?
sobes.tech AI
Atsakymas iš AI
GCD naudojami keturi pagrindiniai eilės tipai:
-
Pagrindinė eilė (Main Queue):
- Serijinė eilė.
- Naudojama vykdyti užduotis pagrindiniame programos sraute (UI atnaujinimai, įvykių apdorojimas).
- Visada viena programai.
-
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.
-
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).
-
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ą. |