Sobes.tech
Junior

Šta je Dispatch red?

sobes.tech АИ

Одговор од АИ

Red Dispatch je lagan objekat koji šalje zadatke za asinhrono ili sinhrono izvršenje u GCD (Grand Central Dispatch).

Vrste redova:

  1. Serijski (Serial): Izvršavaju zadatke strogo po redosledu, jedan za drugim.
  2. Paralelni (Concurrent): Izvršavaju zadatke istovremeno (koliko sistem i dostupni jezgra dozvoljavaju).

Načini dobijanja reda:

  • Glavni red (Main Queue): Serijski red povezan sa glavnim thread-om aplikacije (UI).
    let mainQueue = DispatchQueue.main
    
  • Globalni paralelni redovi (Global Concurrent Queues): Obezbeđeni od strane sistema sa različitim prioritetima QoS.
    let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)
    
  • Prilagođeni redovi: Mogu biti i serijski i paralelni.
    let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue")
    let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
    

Slanje zadataka:

  • async: Dodaje zadatak u red za asinhrono izvršenje, ne blokirajući trenutni thread.
    customSerialQueue.async {
        // Asinhroni zadatak
    }
    
  • sync: Dodaje zadatak u red za sinhrono izvršenje, blokirajući trenutni thread do završetka zadatka.
    customSerialQueue.sync {
        // Sinhroni zadatak
    }
    
    Koristite sync sa oprezom, posebno na glavnom redu, da izbegnete deadlock-ove.

Primene:

  • Izvršavanje pozadinskih zadataka bez blokiranja UI.
  • Upravljanje pristupom zajedničkim resursima (serijski redovi služe za sinhronizaciju).
  • Paralelizacija računanja.