Sobes.tech
Middle

Milyen típusú sorok vannak a main és a global használatában?

sobes.tech MI

Válasz az MI-től

Fő sor (Main queue) egy szekvenciális sor (serial queue), amely az alkalmazás fő szálán (main thread) fut. Az UI frissítésére és az UI események kezelésére használják. Minden a fő sorba küldött feladat szigorúan sorban kerül végrehajtásra.

Globális sorok (Global queues) a rendszer által biztosított párhuzamos (konkurens) sorok. Ezeket háttérfeladatok végrehajtására használják, amelyek nem kapcsolódnak közvetlenül az UI-hoz, így elkerülve a fő szál blokkolását. Többféle globális sor létezik különböző szolgáltatási minőségi (QoS) prioritásokkal.

Az alábbi táblázat a QoS prioritás szerint fő globális sor típusokat mutatja:

QoS Prioritás Leírás Használati példa
userInteractive A legmagasabb prioritás. Az UI azonnali interaktivitásához szükséges feladatokhoz használják. Animációk, érintéses események kezelése.
userInitiated Magas prioritás. Olyan feladatokhoz, amelyeket közvetlenül a felhasználó indít és gyors eredményt igényel. Keresési eredmények megjelenítése, tartalom betöltése a megjelenítéshez.
default Alapértelmezett prioritás. A userInitiated és utility között. Feladatok, amelyeknél nem adtak meg explicit prioritást.
utility Közepes prioritás. Hosszabb ideig tartó feladatokhoz, háttérben futtatva, haladással. Fájlok betöltése, adatok feldolgozása.
background Alacsony prioritás. Háttérfeladatokhoz, amelyek nem igényelnek felhasználói figyelmet. Adatszinkronizálás, biztonsági mentések.
unspecified Nem meghatározott prioritás. A rendszer más tényezők alapján határozza meg. Ritkán használják.

Feladat küldése a fő és globális sorba példák:

DispatchQueue.main.async {
    // UI frissítése
}

DispatchQueue.global(qos: .userInitiated).async {
    // Háttérfeladat végrehajtása magas prioritással
    // A végrehajtás után szükség lehet a visszatérésre a fő sorba a UI frissítéséhez
    DispatchQueue.main.async {
        // UI frissítése a háttérfeladat befejezése után
    }
}