Sobes.tech
Middle

Aké typy front sú používané v main a global?

sobes.tech AI

Odpoveď od AI

Hlavná fronta - je sekvenčná fronta (serial queue), ktorá beží v hlavnom vlákne (main thread) aplikácie. Používa sa na aktualizáciu používateľského rozhrania a spracovanie UI udalostí. Všetky úlohy odoslané do hlavnej fronty sa vykonávajú prísne sekvenčne.

Globálne fronty - sú paralelné fronty (concurrent queues), ktoré poskytuje systém. Používajú sa na vykonávanie pozadíových úloh nesúvisiacich s UI, čo umožňuje vyhnúť sa zablokovaniu hlavného vlákna. Existuje niekoľko globálnych front s rôznymi prioritami kvality služby (Quality of Service, QoS).

Tu je tabuľka s hlavnými typmi globálnych frontov podľa priority QoS:

QoS Priority Popis Príklad použitia
userInteractive Najvyššia priorita. Používa sa pre úlohy, ktoré vyžadujú okamžité vykonanie pre interaktivitu UI. Animácie, spracovanie dotykových udalostí.
userInitiated Vysoká priorita. Používa sa pre úlohy, ktoré sú priamo iniciované používateľom a vyžadujú rýchly výsledok. Zobrazenie výsledkov vyhľadávania, načítanie obsahu pre zobrazenie.
default Štandardná priorita. Medzi userInitiated a utility. Úlohy, pre ktoré nie je priestor jasne uvedený.
utility Stredná priorita. Používa sa pre dlhodobé úlohy, vykonávajúce sa na pozadí s progresom. Načítanie súborov, spracovanie dát.
background Nízka priorita. Používa sa pre úlohy, ktoré sa vykonávajú na pozadí a nevyžadujú pozornosť používateľa. Synchronizácia dát, zálohovanie.
unspecified Priorita nie je uvedená. Systém ju určuje na základe iných faktorov. Zriedka používané.

Príklad odoslania úlohy do hlavnej a globálnej fronty:

DispatchQueue.main.async {
    // Kód na aktualizáciu UI
}

DispatchQueue.global(qos: .userInitiated).async {
    // Kód na vykonanie pozadíovej úlohy s vysokou prioritou
    // Po vykonaní môže byť potrebné vrátiť sa do main queue na aktualizáciu UI
    DispatchQueue.main.async {
        // Aktualizácia UI po dokončení pozadíovej úlohy
    }
}