Freigeben über


DispatchQueue Klasse

Definition

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

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

Hinweise

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

Alle an Versandwarteschlangen übermittelten Blöcke werden in der FIFO-Reihenfolge entfernt. Standardmäßig warten Warteschlangen, die mit dem Standardkonstruktor erstellt wurden, auf den Abschluss des zuvor entfernten Blocks, bevor sie den nächsten Block aus der Warteschlange entfernen. Dieses FIFO-Vervollständigungsverhalten wird manchmal einfach als "serielle Warteschlange" beschrieben. Warteschlangen sind nicht an einen bestimmten Ausführungsthread gebunden, und Blöcke, die an unabhängige Warteschlangen gesendet werden, können gleichzeitig ausgeführt werden. Warteschlangen werden wie alle Dispatchobjekte referenziert, und neu erstellte Warteschlangen weisen die Verweisanzahl 1 auf.

Gleichzeitige Verteilerwarteschlangen werden erstellt, indem als Wert für den concurrent-Parameter im Konstruktor übergeben true wird. Gleichzeitige Warteschlangen können Blöcke gleichzeitig aufrufen (ähnlich wie die globalen gleichzeitigen Warteschlangen, aber möglicherweise mit mehr Mehraufwand) und Barriereblöcke unterstützen, die mit der Dispatch Barrier-API übermittelt werden, was z. B. die Implementierung effizienter Reader-Writer-Schemas ermöglicht.

Das optionale Label-Argument wird verwendet, um den Zweck der Warteschlange zu beschreiben und ist beim Debuggen und bei der Leistungsanalyse nützlich. Gemäß Konvention sollten Clients eine Reverse-DNS-Formatbezeichnung übergeben. Wenn eine Bezeichnung angegeben wird, wird sie kopiert. Wenn keine Bezeichnung angegeben wird, gibt die Label-Eigenschaft eine leere C-Zeichenfolge zurück. Beispiel:

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

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

Die Dispatchwarteschlange ist T:System.Threading.SynchronizationContext-fähig , und es sei denn, es ist ein benutzerdefinierter Synchronisierungskontext für den Thread festgelegt, wird ein eigener Synchronisierungskontext installiert, um sicherzustellen, dass jede Kontextverteilung in derselben Verteilerwarteschlange endet.

Api für Die Verteilerbarriere

Die API für die Verteilerbarriere ist ein Mechanismus zum Übermitteln von Sperrblöcken an eine Verteilerwarteschlange, analog zu den DispatchAsync(Action)/DispatchSync(Action) Methoden. Es ermöglicht die Implementierung effizienter Reader/Writer-Schemas. Barriereblöcke verhalten sich nur speziell, wenn sie an gleichzeitige Warteschlangen übermittelt werden; In einer solchen Warteschlange wird ein Sperrblock erst ausgeführt, wenn alle zuvor an die Warteschlange übermittelten Blöcke abgeschlossen sind, und alle Blöcke, die nach einem Sperrblock an die Warteschlange übermittelt werden, werden erst ausgeführt, wenn der Sperrblock abgeschlossen ist. Wenn sie an eine globale Warteschlange oder 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

DispatchQueue(IntPtr)

Zeigt eine nicht verwaltete DispatchQueue als verwaltetes Objekt an.

DispatchQueue(String)

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

DispatchQueue(String, Boolean)

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

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

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

Eigenschaften

Context

Benutzerdefinierte Kontextinformationen werden an eine DispatchQueue angefügt.

CurrentQueue

Entwickler sollten diese veraltete Eigenschaft nicht verwenden.

CurrentQueueLabel

Bezeichnung für die aktuelle Warteschlange.

DefaultGlobalQueue

Gibt die standardmäßige globale Warteschlange zurück, die eine der integrierten Warteschlangen mit der Standardpriorität ist.

Handle

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

(Geerbt von DispatchObject)
Label

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

MainQueue

Gibt die globale Hauptwarteschlange zurück.

QualityOfService

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

Methoden

Activate()

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

(Geerbt von DispatchObject)
Check()
Veraltet.

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

(Geerbt von DispatchObject)
DispatchAfter(DispatchTime, Action)

Führt dieses Mal am oder nach der angegebenen Zeit aus.

DispatchAfter(DispatchTime, DispatchBlock)

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

DispatchAsync(Action)

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

DispatchAsync(DispatchBlock)

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

DispatchBarrierAsync(Action)

Übermittelt einen Sperrblock für die asynchrone Ausführung in einer Dispatchwarteschlange.

DispatchBarrierAsync(DispatchBlock)

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

DispatchBarrierSync(Action)

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

DispatchBarrierSync(DispatchBlock)

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

DispatchSync(Action)

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

DispatchSync(DispatchBlock)

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

Dispose()

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

(Geerbt von DispatchObject)
Dispose(Boolean)

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

(Geerbt von DispatchObject)
Equals(Object)

Stellt eine Aufgabenwarteschlange bereit, die Aufgaben entweder 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 entweder synchron oder asynchron ausführen kann.

GetQualityOfService(Int32)

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

GetSpecific(IntPtr)

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

InitializeHandle(IntPtr)

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

(Geerbt von NativeObject)
MainIteration()

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

Release()

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

(Geerbt von DispatchObject)
Resume()

Setzt die Ausführung der Warteschlange fort.

Retain()

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

(Geerbt von DispatchObject)
SetSpecific(IntPtr, Object)

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

SetTargetQueue(DispatchQueue)

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

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

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

Suspend()

Hält die Ausführung der Warteschlange an.

Operatoren

Equality(DispatchQueue, DispatchQueue)

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

Inequality(DispatchQueue, DispatchQueue)

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

Gilt für:

Weitere Informationen