Sobes.tech
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:

  1. 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.
  2. 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ě.
  3. 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).
  4. 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.