Middle
Quels types de files d'attente existent dans Grand Central Dispatch (GCD) ?
sobes.tech IA
Réponse de l'IA
Dans GCD, quatre types principaux de files d'attente sont utilisés:
-
File d'attente principale (Main Queue):
- File d'attente sérielle.
- Utilisée pour exécuter des tâches sur le thread principal de l'application (mise à jour de l'UI, gestion des événements).
- Il y en a toujours une par application.
-
Files d'attente globales concurrentes (Global Concurrent Queues):
- Files d'attente concurrentes.
- Fournies par le système.
- Ont différents niveaux de priorité de qualité de service (Quality of Service - QoS).
- Peuvent exécuter plusieurs tâches simultanément.
-
Files d'attente sérialisées personnalisées (Custom Serial Queues):
- Files d'attente sérialisées créées par le développeur.
- Exécutent des tâches de manière séquentielle, l'une après l'autre.
- Idéales pour gérer l'accès aux ressources (synchronisation).
-
Files d'attente concurrentes personnalisées (Custom Concurrent Queues):
- Files d'attente concurrentes créées par le développeur.
- Peuvent exécuter plusieurs tâches simultanément.
- Permettent un meilleur contrôle de l'exécution des tâches par rapport aux files d'attente globales concurrentes.
Exemples de création de files d'attente:
// File d'attente principale
let mainQueue = DispatchQueue.main
// Une des files d'attente globales concurrentes (à haute priorité)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)
// File d'attente sérialisée personnalisée
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")
// File d'attente concurrente personnalisée
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)
Priorités QoS pour les files d'attente globales:
| Priorité QoS | Description |
|---|---|
.userInteractive |
Tâches liées à l'interface utilisateur (réponse aux clics). |
.userInitiated |
Tâches initiées par l'utilisateur (chargement de contenu à la demande). |
.default |
Priorité par défaut, entre .userInitiated et .utility. |
.utility |
Tâches longues en arrière-plan (téléchargement de fichiers). |
.background |
Tâches de faible priorité, indépendantes de l'utilisateur. |
.unspecified |
Le système détermine la priorité. |