DispatchQueue Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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. |