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:
-
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.
-
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.
-
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).
-
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. |