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

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