Sprache

DispatchQueue Klasse

Definition

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
    inherit DispatchObject
Vererbung

Hinweise

Warteschlangen sind der grundlegende Mechanismus für die Planung von Blöcken für die Ausführung im Apple Grand Central Dispatch-Framework.

Alle an Verteilerwarteschlangen übermittelten Blöcke werden in FIFO-Reihenfolge dequeuiert. Standardmäßig warten Warteschlangen, die mit dem Standardkonstruktor erstellt wurden, bis der zuvor dequeuierte Block abgeschlossen ist, bevor der nächste Block aufgehoben wird. Dieses FIFO-Vervollständigungsverhalten wird manchmal einfach als "serielle Warteschlange" beschrieben. Warteschlangen sind nicht an einen bestimmten Ausführungsthread gebunden, und an unabhängige Warteschlangen gesendete Blöcke können gleichzeitig ausgeführt werden. Warteschlangen, wie alle Verteilerobjekte, werden als Referenz gezählt, und neu erstellte Warteschlangen weisen eine Referenzanzahl auf.

Gleichzeitige Verteilerwarteschlangen werden durch Übergeben true als Wert für den gleichzeitigen Parameter im Konstruktor erstellt. Gleichzeitige Warteschlangen können Blöcke gleichzeitig aufrufen (ähnlich wie die globalen gleichzeitigen Warteschlangen, aber potenziell mit mehr Aufwand), und Unterstützungsbarriereblöcke, die mit der Dispatch Barrier API übermittelt werden, was z. B. die Implementierung effizienter Reader-Writer-Schemas ermöglicht.

Das optionale Bezeichnungsargument wird verwendet, um den Zweck der Warteschlange zu beschreiben und ist bei der Debugging- und Leistungsanalyse nützlich. Standardmäßig sollten Clients eine Reverse-DNS-Formatbezeichnung übergeben. Wenn eine Bezeichnung bereitgestellt wird, wird sie kopiert. Wenn keine Bezeichnung angegeben wird, gibt die Label-Eigenschaft eine leere C-Zeichenfolge zurück. Beispiele:

var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");

Warteschlangen können vorübergehend angehalten und mit den Funktionen Suspend()Resume() fortgesetzt werden. Das Anhalten wird vor der Blockierung überprüft und ist nicht präventiv.

Die Verteilerwarteschlange ist SynchronizationContext bekannt, und es sei denn, für den Thread ist ein benutzerdefinierter Synchronisierungskontext festgelegt, der einen eigenen Synchronisierungskontext installiert, um sicherzustellen, dass jeder Kontextversand in derselben Verteilerwarteschlange endet.

Dispatch Barrier API

Die Versandbarriere-API ist ein Mechanismus zum Übermitteln von Barriereblöcken an eine Verteilerwarteschlange, analog zu den DispatchAsync(Action)/DispatchSync(Action) Methoden. Sie ermöglicht die Implementierung effizienter Reader/Writer-Schemas. Barriereblöcke verhalten sich nur speziell, wenn sie an gleichzeitige Warteschlangen übermittelt werden; auf einer solchen Warteschlange wird ein Sperrblock erst ausgeführt, wenn alle an die Warteschlange übermittelten Blöcke zuvor abgeschlossen wurden, und alle Blöcke, die nach abschluss eines Sperrblocks an die Warteschlange übermittelt wurden, werden erst ausgeführt, wenn der Sperrblock abgeschlossen wurde. Wenn sie an eine globale Warteschlange oder an eine nicht gleichzeitige Warteschlange übermittelt werden, verhalten sich Barriereblöcke identisch mit Blöcken, die mit den DispatchAsync(Action)/DispatchSync(Action) Methoden übermittelt werden.

Konstruktoren

Name Beschreibung
DispatchQueue(String, Boolean)

Erstellt eine benannte Verteilerwarteschlange, die optional jeden übermittelten Code gleichzeitig ausführen kann.

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchQueue(String)

Erstellt eine benannte Verteilerwarteschlange, die alle übermittelten Blöcke serialisiert.

Eigenschaften

Name Beschreibung
Context

Benutzerdefinierte Kontextinformationen, die an eine DispatchQueue angefügt sind.

CurrentQueue

Entwickler sollten diese veraltete Eigenschaft nicht verwenden.

CurrentQueueLabel

Bezeichnung für die aktuelle Warteschlange.

DefaultGlobalQueue

Gibt die standardmäßige globale Warteschlange zurück, bei der es sich um eine der integrierten Warteschlangen bei der Standardpriorität handelt.

Handle

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DisposableObject)
Label

Gibt die Bezeichnung für diese DispatchQueue zurück.

MainQueue

Gibt die globale Hauptwarteschlange zurück.

Owns

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DisposableObject)
QualityOfService

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

Methoden

Name Beschreibung
Activate()

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DispatchObject)
ClearHandle()

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DisposableObject)
DispatchAfter(DispatchTime, Action)

Wird dieses Mal nach oder nach der angegebenen Uhrzeit ausgeführt.

DispatchAfter(DispatchTime, DispatchBlock)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchAsync(Action)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchAsync(DispatchBlock)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchBarrierAsync(Action)

Sendet einen Sperrblock für die asynchrone Ausführung in einer Verteilerwarteschlange.

DispatchBarrierAsync(DispatchBlock)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchBarrierSync(Action)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchBarrierSync(DispatchBlock)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchSync(Action)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

DispatchSync(DispatchBlock)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

Dispose()

Gibt alle von diesem Objekt verwendeten Ressourcen frei.

(Geerbt von DisposableObject)
Dispose(Boolean)

Gibt die von diesem Objekt verwendeten Ressourcen frei.

(Geerbt von NativeObject)
Equals(Object)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DisposableObject)
GetCheckedHandle()

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DisposableObject)
GetGlobalQueue(DispatchQualityOfService)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

GetGlobalQueue(DispatchQueuePriority)

Gibt eine der globalen Verteilerwarteschlangen basierend auf der angeforderten Priorität zurück.

GetHashCode()

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DisposableObject)
GetQualityOfService(Int32)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

GetSpecific(IntPtr)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

InitializeHandle(NativeHandle)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DisposableObject)
MainIteration()

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

Release()

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DispatchObject)
Resume()

Setzt die Ausführung der Warteschlange fort.

Retain()

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DispatchObject)
SetSpecific(IntPtr, Object)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

SetTargetQueue(DispatchQueue)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

(Geerbt von DispatchObject)
Submit(Action<Int32>, Int64)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

Suspend()

Hält die Ausführung der Warteschlange an.

Erweiterungsmethoden

Name Beschreibung
GetHandle(INativeObject)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

GetNonNullHandle(INativeObject, String)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben synchron oder asynchron ausführen kann.

Gilt für:

Siehe auch