Sobes.tech
Middle

¿Qué tipos de colas existen en Grand Central Dispatch (GCD)?

sobes.tech AI

Respuesta de la IA

En GCD se utilizan cuatro tipos principales de colas:

  1. Cola principal (Main Queue):

    • Cola serial.
    • Se usa para ejecutar tareas en el hilo principal de la aplicación (actualizaciones de UI, manejo de eventos).
    • Siempre hay una por aplicación.
  2. Colas globales concurrentes (Global Concurrent Queues):

    • Colas concurrentes.
    • Proporcionadas por el sistema.
    • Tienen diferentes niveles de prioridad de calidad de servicio (Quality of Service - QoS).
    • Pueden ejecutar varias tareas simultáneamente.
  3. Colas seriales personalizadas (Custom Serial Queues):

    • Colas seriales creadas por el desarrollador.
    • Ejecutan tareas de forma secuencial, una tras otra.
    • Ideales para gestionar el acceso a recursos (sincronización).
  4. Colas concurrentes personalizadas (Custom Concurrent Queues):

    • Colas concurrentes creadas por el desarrollador.
    • Pueden ejecutar varias tareas simultáneamente.
    • Permiten un mejor control de la ejecución de tareas en comparación con las colas globales concurrentes.

Ejemplos de creación de colas:

// Cola principal
let mainQueue = DispatchQueue.main

// Una de las colas globales concurrentes (de alta prioridad)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// Cola serial personalizada
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// Cola concurrente personalizada
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

Prioridades QoS para colas globales:

Prioridad QoS Descripción
.userInteractive Tareas relacionadas con la interfaz de usuario (respuesta a clics).
.userInitiated Tareas iniciadas por el usuario (carga de contenido bajo demanda).
.default Prioridad por defecto, entre .userInitiated y .utility.
.utility Tareas de fondo largas (descarga de archivos).
.background Tareas de baja prioridad, independientes del usuario.
.unspecified El sistema determina la prioridad.