DispatchQueue Classe

Définition

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
DispatchQueue
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 soumis aux files d’attente de distribution sont supprimés 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 en file d’attente se termine avant de mettre en file d’attente le bloc suivant. Ce comportement de saisie semi-automatique FIFO est parfois simplement décrit comme une « file d’attente série ». Les files d’attente ne sont liées à aucun thread d’exécution spécifique 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 et les files d’attente nouvellement créées ont un nombre de références.

Les files d’attente de répartition simultanée sont créées en passant true comme valeur du paramètre simultané sur le constructeur. Les files d’attente simultanées peuvent appeler des blocs simultanément (de la même manière que les files d’attente simultanées globales, mais potentiellement avec une surcharge supplémentaire) et prennent en charge les blocs de barrière envoyés avec l’API de barrière de répartition, ce qui permet par exemple l’implémentation de schémas de lecteur-enregistreur efficaces.

L’argument d’étiquette facultatif est utilisé pour décrire l’objectif de la file d’attente et est utile lors du débogage et de l’analyse des performances. Par convention, les clients doivent passer une étiquette de style DNS inverse. Si une étiquette est fournie, elle est copiée. Si aucune étiquette n’est fournie, la propriété Label renvoie 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 reprises avec les fonctions Suspend() et Resume() respectivement. La suspension est vérifiée avant l’exécution du blocage et n’est pas préventive.

La file d’attente de répartition est T:System.Threading.SynchronizationContext et, sauf s’il existe un contexte de synchronisation personnalisé défini pour le thread, il installe son propre contexte de synchronisation pour garantir que toute répartition de contexte se termine sur la même file d’attente de distribution.

API de barrière 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 lecteur/enregistreur efficaces. Les blocs de barrière se comportent uniquement spécialement lorsqu’ils sont soumis à des files d’attente simultanées ; sur une telle file d’attente, un bloc de barrière ne s’exécutera pas tant que tous les blocs soumis à la file d’attente précédemment n’auront pas terminé, et tous les blocs soumis à la file d’attente après un bloc de barrière ne s’exécuteront 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 la même manière que les blocs soumis avec les DispatchAsync(Action)/DispatchSync(Action) méthodes.

Constructeurs

DispatchQueue(IntPtr)

Surface un DispatchQueue non managé en tant qu’objet managé.

DispatchQueue(String)

Crée une file d’attente de répartition nommée qui sérialise tous les blocs soumis.

DispatchQueue(String, Boolean)

Crée une file d’attente de distribution nommée qui peut éventuellement exécuter n’importe quel code envoyé 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.

Propriétés

Context

Des informations de contexte définies par l’utilisateur sont jointes à une DispatchQueue.

CurrentQueue

Les développeurs ne doivent pas utiliser cette propriété déprécié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 DispatchObject)
Label

Retourne l’étiquette de cette DispatchQueue.

MainQueue

Retourne la file d’attente globale principale.

QualityOfService

Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.

Méthodes

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)
Check()
Obsolète.

Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.

(Hérité de DispatchObject)
DispatchAfter(DispatchTime, Action)

Exécute cette heure à 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 une 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()

Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.

(Hérité de DispatchObject)
Dispose(Boolean)

Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.

(Hérité de DispatchObject)
Equals(Object)

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 répartition globale 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.

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(IntPtr)

Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.

(Hérité de NativeObject)
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.

Opérateurs

Equality(DispatchQueue, DispatchQueue)

Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.

Inequality(DispatchQueue, DispatchQueue)

Fournit une file d’attente de tâches qui peut effectuer des tâches de manière synchrone ou asynchrone.

S’applique à

Voir aussi