Middle
Koje vrste redova postoje u Grand Central Dispatch (GCD)?
sobes.tech АИ
Одговор од АИ
U GCD se koriste četiri glavne vrste redova:
-
Glavni red (Main Queue):
- Serijski red.
- Koristi se za izvršavanje zadataka na glavnoj niti aplikacije (UI ažuriranja, obrada događaja).
- Uvek postoji jedan po aplikaciji.
-
Globalni konkurentni redovi (Global Concurrent Queues):
- Konkurentni redovi.
- Obezbeđeni od strane sistema.
- Imaju različite nivoe prioriteta kvaliteta usluge (Quality of Service - QoS).
- Mogu izvršavati više zadataka istovremeno.
-
Prilagođeni serijski redovi (Custom Serial Queues):
- Serijski redovi kreirani od strane programera.
- Izvršavaju zadatke sekvencijalno, jedan za drugim.
- Idealni za upravljanje pristupom resursima (sinhronizacija).
-
Prilagođeni konkurentni redovi (Custom Concurrent Queues):
- Konkurentni redovi kreirani od strane programera.
- Mogu izvršavati više zadataka istovremeno.
- Omogućavaju bolju kontrolu nad izvršavanjem zadataka u poređenju sa globalnim konkurentnim redovima.
Primeri kreiranja redova:
// Glavni red
let mainQueue = DispatchQueue.main
// Jedan od globalnih konkurentnih redova (sa visokim prioritetom)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// Prilagođeni serijski red
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// Prilagođeni konkurentni red
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
QoS prioriteti za globalne redove:
| QoS prioritet | Opis |
|---|---|
.userInteractive |
Zadaci povezani sa korisničkim interfejsom (odgovor na klikove). |
.userInitiated |
Zadaci koje pokreće korisnik (preuzimanje sadržaja na zahtev). |
.default |
Zadani prioritet, između .userInitiated i .utility. |
.utility |
Dugi pozadinski zadaci (preuzimanje fajlova). |
.background |
Zadaci niskog prioriteta, nezavisni od korisnika. |
.unspecified |
Sistem određuje prioritet. |