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:
- Serijski (Serial): Izvršavaju zadatke strogo po redosledu, jedan za drugim.
- 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.KoristitecustomSerialQueue.sync { // Sinhroni zadatak }syncsa 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.