Middle
Aké typy front existujú v Grand Central Dispatch (GCD)?
sobes.tech AI
Odpoveď od AI
V GCD sa používajú štyri hlavné typy frontov:
-
Hlavná fronta (Main Queue):
- Sekvenčná fronta.
- Používa sa na vykonávanie úloh v hlavnom vlákne aplikácie (UI aktualizácie, spracovanie udalostí).
- Vždy jedna na aplikáciu.
-
Globálne konkurenčné fronty (Global Concurrent Queues):
- Konkurenčné fronty.
- Poskytované systémom.
- Majú rôzne úrovne priorít kvality služby (Quality of Service - QoS).
- Môžu vykonávať niekoľko úloh súčasne.
-
Používateľské sekvenčné fronty (Custom Serial Queues):
- Sekvenčné fronty vytvárané vývojárom.
- Vykonávajú úlohy postupne, jedna za druhou.
- Ideálne na správu prístupu ku zdrojom (synchronizácia).
-
Používateľské konkurenčné fronty (Custom Concurrent Queues):
- Konkurenčné fronty vytvárané vývojárom.
- Môžu vykonávať niekoľko úloh súčasne.
- Umožňujú lepšiu kontrolu vykonávania úloh v porovnaní s globálnymi konkurenčnými frontami.
Príklady vytvárania frontov:
// Hlavná fronta
let mainQueue = DispatchQueue.main
// Jedna z globálnych konkurenčných front (s vysokou prioritou)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// Používateľská sekvenčná fronta
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// Používateľská konkurenčná fronta
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
Prioritné QoS pre globálne fronty:
| QoS Priorita | Popis |
|---|---|
.userInteractive |
Úlohy súvisiace s používateľským rozhraním (odpoveď na stlačenia). |
.userInitiated |
Úlohy iniciované používateľom (načítanie obsahu na požiadanie). |
.default |
Predvolená priorita, medzi .userInitiated a .utility. |
.utility |
Dlhé pozadie úlohy (sťahovanie súborov). |
.background |
Úlohy s nízkou prioritou, nezávislé od používateľa. |
.unspecified |
Systém určuje prioritu. |