DispatchQueue Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.
public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
inherit DispatchObject
- Héritage
Remarques
Les files d’attente sont le mécanisme fondamental de planification des blocs pour l’exécution dans l’infrastructure Apple Grand Central Dispatch.
Tous les blocs envoyés aux files d’attente de distribution sont mis en file d’attente dans l’ordre FIFO. Par défaut, les files d’attente créées avec le constructeur par défaut attendent que le bloc précédemment mis en file d’attente se termine avant de mettre en file d’attente le bloc suivant. Ce comportement d’achèvement FIFO est parfois simplement décrit comme une « file d’attente série ». Les files d’attente ne sont liées à aucun thread spécifique d’exécution et les blocs soumis à des files d’attente indépendantes peuvent s’exécuter simultanément. Les files d’attente, comme tous les objets de répartition, sont comptabilisées de référence et les files d’attente nouvellement créées ont un nombre de références d’un.
Les files d’attente de répartition simultanées sont créées en transmettant true la valeur du paramètre simultané sur le constructeur. Les files d’attente simultanées peuvent appeler des blocs simultanément (de la même façon que les files d’attente simultanées globales, mais potentiellement avec plus de surcharge) et prendre en charge les blocs de barrière soumis avec l’API de barrière de distribution, ce qui permet par exemple l’implémentation de schémas d’enregistreur de lecture efficaces.
L’argument d’étiquette facultatif est utilisé pour décrire l’objectif de la file d’attente et est utile pendant le débogage et l’analyse des performances. Par convention, les clients doivent passer une étiquette de style DNS inversée. Si une étiquette est fournie, elle est copiée. Si une étiquette n’est pas fournie, la propriété Label retourne une chaîne C vide. Par exemple:
var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");
Les files d’attente peuvent être temporairement suspendues et reprise avec les fonctions Suspend() et Resume() respectivement. La suspension est vérifiée avant l’exécution de bloc et n’est pas préemptive.
La file d’attente de distribution est SynchronizationContext consciente et, sauf s’il existe un contexte de synchronisation personnalisé pour le thread, il installe son propre contexte de synchronisation pour garantir que toute distribution de contexte se termine sur la même file d’attente de distribution.
API d’obstacle de répartition
L’API de barrière de répartition est un mécanisme permettant d’envoyer des blocs de barrière à une file d’attente de distribution, analogue aux DispatchAsync(Action)/DispatchSync(Action) méthodes. Il permet l’implémentation de schémas de lecture/enregistreur efficaces. Les blocs de barrière se comportent uniquement lorsqu’ils sont soumis à des files d’attente simultanées ; sur une telle file d’attente, un bloc de barrière ne s’exécute pas tant que tous les blocs soumis à la file d’attente précédemment ont terminé et que tous les blocs soumis à la file d’attente après qu’un bloc de barrière ne s’exécute pas tant que le bloc de barrière n’est pas terminé. Lorsqu’ils sont soumis à une file d’attente globale ou à une file d’attente non simultanée, les blocs de barrière se comportent de façon identique aux blocs soumis avec les DispatchAsync(Action)/DispatchSync(Action) méthodes.
Constructeurs
| Nom | Description |
|---|---|
| DispatchQueue(String, Boolean) |
Crée une file d’attente de répartition nommée qui peut éventuellement exécuter un code soumis simultanément. |
| DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchQueue(String) |
Crée une file d’attente de répartition nommée qui sérialise tous les blocs envoyés. |
Propriétés
| Nom | Description |
|---|---|
| Context |
Informations de contexte définies par l’utilisateur attachées à un DispatchQueue. |
| CurrentQueue |
Les développeurs ne doivent pas utiliser cette propriété déconseillée. |
| CurrentQueueLabel |
Étiquette de la file d’attente actuelle. |
| DefaultGlobalQueue |
Retourne la file d’attente globale par défaut, qui est l’une des files d’attente intégrées à la priorité par défaut. |
| Handle |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DisposableObject) |
| Label |
Retourne l’étiquette de cette DispatchQueue. |
| MainQueue |
Retourne la file d’attente globale principale. |
| Owns |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DisposableObject) |
| QualityOfService |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
Méthodes
| Nom | Description |
|---|---|
| Activate() |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DispatchObject) |
| ClearHandle() |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DisposableObject) |
| DispatchAfter(DispatchTime, Action) |
Exécute cette fois-ci ou après l’heure spécifiée. |
| DispatchAfter(DispatchTime, DispatchBlock) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchAsync(Action) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchAsync(DispatchBlock) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchBarrierAsync(Action) |
Envoie un bloc de barrière pour l’exécution asynchrone sur une file d’attente de distribution |
| DispatchBarrierAsync(DispatchBlock) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchBarrierSync(Action) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchBarrierSync(DispatchBlock) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchSync(Action) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| DispatchSync(DispatchBlock) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| Dispose() |
Libère toutes les ressources utilisées par cet objet. (Hérité de DisposableObject) |
| Dispose(Boolean) |
Libère les ressources utilisées par cet objet. (Hérité de NativeObject) |
| Equals(Object) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DisposableObject) |
| GetCheckedHandle() |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DisposableObject) |
| GetGlobalQueue(DispatchQualityOfService) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| GetGlobalQueue(DispatchQueuePriority) |
Retourne l’une des files d’attente de distribution globales en fonction de la priorité demandée. |
| GetHashCode() |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DisposableObject) |
| GetQualityOfService(Int32) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| GetSpecific(IntPtr) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| InitializeHandle(NativeHandle) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DisposableObject) |
| MainIteration() |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| Release() |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DispatchObject) |
| Resume() |
Reprend l’exécution de la file d’attente. |
| Retain() |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DispatchObject) |
| SetSpecific(IntPtr, Object) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| SetTargetQueue(DispatchQueue) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. (Hérité de DispatchObject) |
| Submit(Action<Int32>, Int64) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| Suspend() |
Suspend l’exécution de la file d’attente. |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetHandle(INativeObject) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |
| GetNonNullHandle(INativeObject, String) |
Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone. |