Los artículos explican cómo funciona GCD con DispatchQueue: el trabajo se envía como closures (bloques de código), no como hilos, y la cola decide cuándo ejecutarlo. En colas FIFO (first in, first out), GCD garantiza el orden de inicio de las tareas según el orden en que se despachan; sin embargo, el orden de finalización no está garantizado. Esa diferencia depende de si la cola es serial o concurrente.

Cada tarea puede llevar una prioridad mediante Quality of Service (QoS, DispatchQoS). El sistema usa el QoS como señal relativa para asignar tiempo de CPU cuando compiten tareas. Se describen niveles como .userInteractive (más alta, para tareas cuya latencia afecte la interfaz), .userInitiated (trabajo que el usuario espera activamente), .default, .utility (larga duración con resultado no inmediato) y .background (más baja, trabajo no percibido por el usuario). El QoS no ofrece una garantía absoluta de velocidad.

Sobre los tipos de colas, se mencionan la cola principal DispatchQueue.main (serial y ligada al hilo principal), las colas globales DispatchQueue.global(qos:) (concurrentes, una por QoS y administradas por el sistema) y colas propias DispatchQueue(label:) (creadas por el desarrollador; por defecto serial, concurrentes si se especifica .concurrent). En colas concurrentes con async, pueden ejecutarse tareas en paralelo sin garantía de orden de inicio vs. otras impresiones, y se advierte riesgo de carreras al acceder a estado compartido sin sincronización.