Sobes.tech
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 након завршетка позадинског задатка
    }
}