Middle
Kādi ir rindas veidi, kas tiek izmantoti main un global?
sobes.tech AI
Atbilde no AI
Galvenā rinda - tā ir secīga rinda (serial queue), kas darbojas galvenajā pavedienā (main thread) lietojumprogrammā. Tā tiek izmantota lietotāja saskarnes atjaunināšanai un UI notikumu apstrādei. Visi uzdevumi, kas nosūtīti galvenajai rindai, tiek izpildīti stingri secīgi.
Globālās rindas - tās ir paralēlas rindas (concurrent queues), ko nodrošina sistēma. Tās tiek izmantotas fonu uzdevumu veikšanai, kas nav saistīti ar UI, ļaujot izvairīties no galvenā pavediena bloķēšanas. Pastāv vairākas globālas rindas ar dažādiem pakalpojuma kvalitātes (QoS) prioritātes līmeņiem.
Šeit ir tabula ar galvenajiem globālo rindu tipiem pēc QoS prioritātes:
| QoS Prioritāte | Apraksts | Piemērs izmantošanai |
|---|---|---|
userInteractive |
Visaugstākā prioritāte. Tiek izmantota uzdevumiem, kas prasa nekavējošu izpildi UI interaktivitātei | Animācijas, pieskāriena notikumu apstrāde |
userInitiated |
Augsta prioritāte. Tiek izmantota uzdevumiem, kas tieši iniciēti lietotāja un prasa ātru rezultātu | Meklēšanas rezultātu rādīšana, satura ielāde |
default |
Standarta prioritāte. Starp userInitiated un utility |
Uzdevumi, kuriem skaidri nav norādīta prioritāte |
utility |
Vidēja prioritāte. Tiek izmantota ilgstošiem uzdevumiem fonā ar progresu | Failu ielāde, datu apstrāde |
background |
Zema prioritāte. Tiek izmantota fonu uzdevumiem, kas neprasa lietotāja uzmanību | Datu sinhronizācija, rezerves kopiju veidošana |
unspecified |
Prioritāte nav norādīta. Sistēma to nosaka, balstoties uz citiem faktoriem | Reti lieto |
Piemērs, kā nosūtīt uzdevumu uz galveno un globālo rindu:
DispatchQueue.main.async {
// UI atjaunināšanas kods
}
DispatchQueue.global(qos: .userInitiated).async {
// Fonā veicama uzdevuma kods ar augstu prioritāti
// Pēc izpildes var būt nepieciešams atgriezties uz galveno rindu UI atjaunināšanai
DispatchQueue.main.async {
// UI atjaunināšana pēc fonā veiktā uzdevuma pabeigšanas
}
}