Middle
Kādi rindu tipi pastāv Grand Central Dispatch (GCD)?
sobes.tech AI
Atbilde no AI
GCD izmanto četrus galvenos veidu tipus:
-
Galvenā rinda (Main Queue):
- Sekvencēta rinda.
- Izmanto galvenajā lietotnes plūsmā uzdevumu izpildei (UI atjauninājumi, notikumu apstrāde).
- Viena uz lietotni.
-
Globālas konkurējošas rindas (Global Concurrent Queues):
- Konkurējošas rindas.
- Nodrošina sistēma.
- Tiem ir dažādi pakalpojuma kvalitātes līmeņi (Quality of Service - QoS).
- Var izpildīt vairākus uzdevumus vienlaicīgi.
-
Lietotāja veidotas secīgas rindas (Custom Serial Queues):
- Lietotāja veidotas secīgas rindas.
- Izpilda uzdevumus secīgi, viens pēc otra.
- Ideāli resursu piekļuves pārvaldībai (sinhronizācija).
-
Lietotāja veidotas konkurējošas rindas (Custom Concurrent Queues):
- Lietotāja veidotas konkurējošas rindas.
- Var izpildīt vairākus uzdevumus vienlaicīgi.
- Labāk kontrolē uzdevumu izpildi nekā globālās konkurējošās rindas.
Rindu izveides piemēri:
// Galvenā rinda
let mainQueue = DispatchQueue.main
// Viena no globālajām konkurējošajām rindām (ar augstu prioritāti)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// Lietotāja veidota secīga rinda
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// Lietotāja veidota konkurējoša rinda
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
QoS prioritātes globālajām rindām:
| QoS prioritāte | Apraksts |
|---|---|
.userInteractive |
Uzdevumi, kas saistīti ar lietotāja saskarni (atbilde uz nospiešanas). |
.userInitiated |
Lietotāja iniciēti uzdevumi (satura ielāde pēc pieprasījuma). |
.default |
Noklusējuma prioritāte, starp .userInitiated un .utility. |
.utility |
Ilgstoši fonu uzdevumi (failu lejupielāde). |
.background |
Zemas prioritātes uzdevumi, kas nav atkarīgi no lietotāja. |
.unspecified |
Sistēma nosaka prioritāti. |