Junior
Cos'è una coda di Dispatch?
sobes.tech AI
Risposta dell'AI
La coda Dispatch è un oggetto leggero che invia compiti per l'esecuzione asincrona o sincrona in GCD (Grand Central Dispatch).
Tipi di code:
- Seriali (Serial): Eseguono i compiti in ordine, uno dopo l’altro.
- Concorrenti (Concurrent): Eseguono i compiti contemporaneamente (fino a quanto permette il sistema e i core disponibili).
Metodi per ottenere una coda:
- Coda principale (Main Queue): Coda seriale associata al thread principale dell’applicazione (UI).
let mainQueue = DispatchQueue.main - Code globali concorrenti (Global Concurrent Queues): Fornite dal sistema con diverse priorità QoS.
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated) - Code personalizzate: Possono essere sia seriali che concorrenti.
let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue") let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
Invio di compiti:
async: Aggiunge un compito alla coda per l’esecuzione asincrona, senza bloccare il thread corrente.customSerialQueue.async { // Compito asincrono }sync: Aggiunge un compito alla coda per l’esecuzione sincrona, bloccando il thread corrente fino al completamento.UsacustomSerialQueue.sync { // Compito sincrono }synccon cautela, specialmente sulla coda principale, per evitare deadlock.
Applicazioni:
- Eseguire compiti in background senza bloccare l’UI.
- Gestire l’accesso alle risorse condivise (le code seriali servono per la sincronizzazione).
- Parallelizzare i calcoli.