Middle
Koje su vrste redova korišćene u main i global?
sobes.tech АИ
Одговор од АИ
Главна редица - то је секвенцијална редица (serial queue), која ради у главном току (main thread) апликације. Користи се за ажурирање корисничког интерфејса и обраду UI догађаја. Сви задаци послати у главну редицу извршавају се строго по реду.
Глобалне редице - то су паралелне редице (concurrent queues), које пружа систем. Користе се за извршавање позадинских задатака који нису повезани са UI-jem, што омогућава избегавање блокирања главног тока. Постоји неколико глобалних редица са различитим приоритетима квалитета услуге (Quality of Service, QoS).
Ево табеле са основним типовима глобалних редица по приоритету QoS:
| QoS приоритет | Опис | Пример употребе |
|---|---|---|
userInteractive |
Највиши приоритет. Користи се за задатке који захтевају тренутно извршење за интерактивност UI. | Анимације, обрада додира. |
userInitiated |
Висок приоритет. Користи се за задатке које директно иницира корисник и захтева брз резултат. | Приказ резултата претраге, учитавање садржаја за приказ. |
default |
Стандардни приоритет. Међу userInitiated и utility. |
Задаци за које приоритет јасно није наведен. |
utility |
Средњи приоритет. Користи се за дуготрајне задатке који се извршавају у позадини са напредовањем. | Учитавање датотека, обрада података. |
background |
Низак приоритет. Користи се за задатке који се извршавају у позадини и не захтевају пажњу корисника. | Синхронизација података, резервна копија. |
unspecified |
Приоритет није наведен. Систем га одређује на основу других фактора. | Ретко се користи. |
Пример слања задатка у главну и глобалну редицу:
DispatchQueue.main.async {
// Код за ажурирање UI
}
DispatchQueue.global(qos: .userInitiated).async {
// Код за извршавање позадинског задатка са високим приоритетом
// После извршења, можда ће бити потребно вратити се у main queue за ажурирање UI
DispatchQueue.main.async {
// Ажурирање UI након завршетка позадинског задатка
}
}