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:
- Sériové (Serial): Vykonávajú úlohy prísne v poradí, jednu po druhej.
- 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.PoužívajtecustomSerialQueue.sync { // Synchronná úloha }syncopatrne, 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.