Sobes.tech
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
    }
}