Middle
Jaké typy front existují v Grand Central Dispatch (GCD)?
sobes.tech AI
Odpověď od AI
V GCD se používají čtyři hlavní typy front:
-
Hlavní fronta (Main Queue):
- Sekvenční fronta.
- Používá se k vykonávání úkolů na hlavním vlákně aplikace (aktualizace UI, zpracování událostí).
- Vždy jedna na aplikaci.
-
Globální konkurenční fronty (Global Concurrent Queues):
- Konkurenční fronty.
- Poskytované systémem.
- Mají různé úrovně priority kvality služby (Quality of Service - QoS).
- Mohou vykonávat více úkolů současně.
-
Vlastní sekvenční fronty (Custom Serial Queues):
- Sekvenční fronty vytvářené vývojářem.
- Vykonávají úkoly sekvenčně, jeden po druhém.
- Ideální pro správu přístupu ke zdrojům (synchronizace).
-
Vlastní konkurenční fronty (Custom Concurrent Queues):
- Konkurenční fronty vytvářené vývojářem.
- Mohou vykonávat více úkolů současně.
- Umožňují lepší kontrolu nad vykonáváním úkolů ve srovnání s globálními konkurenčními frontami.
Příklady tvorby front:
// Hlavní fronta
let mainQueue = DispatchQueue.main
// Jedna z globálních konkurenčních front (s vysokou prioritou)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// Vlastní sekvenční fronta
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// Vlastní konkurenční fronta
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
QoS priority pro globální fronty:
| QoS Priorita | Popis |
|---|---|
.userInteractive |
Úkoly související s uživatelským rozhraním (reakce na kliknutí). |
.userInitiated |
Úkoly iniciované uživatelem (stahování obsahu na požádání). |
.default |
Výchozí priorita, mezi .userInitiated a .utility. |
.utility |
Dlouhé úkoly na pozadí (stahování souborů). |
.background |
Úkoly s nízkou prioritou, nezávislé na uživateli. |
.unspecified |
Systém určuje prioritu. |