Sobes.tech
Middle

Koje vrste redova postoje u Grand Central Dispatch (GCD)?

sobes.tech АИ

Одговор од АИ

U GCD se koriste četiri glavne vrste redova:

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