Sobes.tech
Junior

Čo je front Dispatch?

sobes.tech AI

Odpoveď od AI

Front Dispatch je ľahký objekt, ktorý odosiela úlohy na asynchrónne alebo synchronizované vykonanie v GCD (Grand Central Dispatch).

Typy frontov:

  1. Sériové (Serial): Vykonávajú úlohy prísne v poradí, jednu po druhej.
  2. Paralelné (Concurrent): Vykonávajú úlohy súčasne (do miery, ktorú umožňuje systém a dostupné jadrá).

Spôsoby získania frontu:

  • Hlavná fronta (Main Queue): Sériová fronta spojená s hlavným vláknom aplikácie (UI).
    let mainQueue = DispatchQueue.main
    
  • Globálne paralelné fronty (Global Concurrent Queues): Sú poskytované systémom s rôznymi QoS prioritami.
    let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated)
    
  • Vlastné fronty: Môžu byť ako sériové, tak paralelné.
    let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue")
    let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
    

Odoslanie úloh:

  • async: Pridá úlohu do frontu na asynchrónne vykonanie, neblokujúc aktuálne vlákno.
    customSerialQueue.async {
        // Asynchrónna úloha
    }
    
  • sync: Pridá úlohu do frontu na synchronické vykonanie, blokujúc aktuálne vlákno do dokončenia úlohy.
    customSerialQueue.sync {
        // Synchronná úloha
    }
    
    Používajte sync opatrne, najmä na hlavnej fronte, aby ste predišli deadlockom.

Použitie:

  • Vykonávanie úloh na pozadí bez blokovania UI.
  • Riadenie prístupu k zdieľaným zdrojom (sériové fronty slúžia na synchronizáciu).
  • Paralelizácia výpočtov.