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
}
}