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