Sobes.tech
Middle

Quali tipi di code esistono in Grand Central Dispatch (GCD)?

sobes.tech AI

Risposta dell'AI

In GCD, ci sono quattro principali tipi di code:

  1. Coda principale (Main Queue):

    • Coda seriale.
    • Usata per eseguire compiti sul thread principale dell'applicazione (aggiornamenti UI, gestione degli eventi).
    • Ne esiste sempre una per applicazione.
  2. Code concorrenti globali (Global Concurrent Queues):

    • Code concorrenti.
    • Fornite dal sistema.
    • Hanno diversi livelli di priorità di qualità del servizio (Quality of Service - QoS).
    • Possono eseguire più compiti contemporaneamente.
  3. Code seriali personalizzate (Custom Serial Queues):

    • Code seriali create dallo sviluppatore.
    • Eseguono compiti in modo sequenziale, uno dopo l'altro.
    • Ideali per gestire l'accesso alle risorse (sincronizzazione).
  4. Code concorrenti personalizzate (Custom Concurrent Queues):

    • Code concorrenti create dallo sviluppatore.
    • Possono eseguire più compiti contemporaneamente.
    • Permettono un migliore controllo dell'esecuzione dei compiti rispetto alle code concorrenti globali.

Esempi di creazione di code:

// Coda principale
let mainQueue = DispatchQueue.main

// Una delle code concorrenti globali (ad alta priorità)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Coda seriale personalizzata
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Coda concorrente personalizzata
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

Priorità QoS per le code globali:

Priorità QoS Descrizione
.userInteractive Compiti relativi all'interfaccia utente (risposta ai clic).
.userInitiated Compiti avviati dall'utente (caricamento contenuti su richiesta).
.default Priorità di default, tra .userInitiated e .utility.
.utility Compiti lunghi in background (download di file).
.background Compiti a bassa priorità, indipendenti dall'utente.
.unspecified Il sistema determina la priorità.