Sobes.tech
Middle

Millised on järjekordade tüübid, mida kasutatakse main ja global?

sobes.tech AI

Vastus AI-lt

Peamine järjekord - see on järjestusjärjekord (serial queue), mis töötab rakenduse peamisel lõngal (main thread). Seda kasutatakse kasutajaliidese uuendamiseks ja UI sündmuste töötlemiseks. Kõik ülesanded, mis saadetakse peamisele järjekorrale, täidetakse rangelt järjestatult.

Globaalne järjekord - need on paralleelsed järjekorrad (concurrent queues), mida süsteem pakub. Neid kasutatakse taustatöödeks, mis ei ole seotud UI-ga, võimaldades vältida peamise lõnga blokeerimist. On olemas mitu globaalset järjekorda erinevate teenindusstandardite (Quality of Service, QoS) prioriteetidega.

Siin on tabel peamiste globaalsete järjekordade tüüpide kohta QoS prioriteedi järgi:

QoS Prioriteet Kirjeldus Kasutamise näide
userInteractive Kõrgeim prioriteet. Kasutatakse ülesannete jaoks, mis nõuavad viivitamatut täitmist UI interaktiivsuse jaoks Animatsioonid, puutetundlike sündmuste töötlemine
userInitiated Kõrge prioriteet. Kasutatakse kasutajalt otseselt algatatud ülesannete jaoks, mis nõuavad kiiret tulemust Otsingutulemuste kuvamine, sisu laadimine
default Vaikimisi prioriteet. Vahel userInitiated ja utility vahel Ülesanded, mille prioriteet ei ole selgelt määratletud
utility Keskmine prioriteet. Kasutatakse pikaajaliste ülesannete jaoks, mis töötavad taustal edusammudega Failide laadimine, andmetöötlus
background Madal prioriteet. Kasutatakse taustatöödeks, mis ei nõua kasutaja tähelepanu Andmete sünkroniseerimine, varundamine
unspecified Prioriteet ei ole määratletud. Süsteem määrab selle teiste tegurite põhjal Harva kasutatakse

Näide ülesande saatmisest peamise ja globaalsete järjekordade vahel:

DispatchQueue.main.async {
    // UI uuendamise kood
}

DispatchQueue.global(qos: .userInitiated).async {
    // Taustatööde täitmise kood kõrge prioriteediga
    // Pärast täitmist võib olla vajalik naasta main queue'le UI uuendamiseks
    DispatchQueue.main.async {
        // UI uuendamine pärast taustatöö lõpetamist
    }
}