Langue

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

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.

S’applique à

Voir aussi