DispatchQueue Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd.
public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
inherit DispatchObject
- Overname
Opmerkingen
Wachtrijen zijn het fundamentele mechanisme voor planningsblokken voor uitvoering binnen het Apple Grand Central Dispatch-framework.
Alle blokken die naar verzendwachtrijen worden verzonden, worden in FIFO-volgorde in de wachtrij geplaatst. Standaard wachten wachtrijen die zijn gemaakt met de standaardconstructor totdat het eerder ontdumpte blok is voltooid voordat het volgende blok wordt verwijderd. Dit FIFO-voltooiingsgedrag wordt soms gewoon beschreven als een 'seriële wachtrij'. Wachtrijen zijn niet gebonden aan een specifieke thread van uitvoering en blokken die aan onafhankelijke wachtrijen worden verzonden, kunnen gelijktijdig worden uitgevoerd. Wachtrijen, zoals alle verzendobjecten, worden geteld en zojuist gemaakte wachtrijen hebben een referentieaantal van één.
Gelijktijdige verzendwachtrijen worden gemaakt door de waarde voor de gelijktijdige parameter op de constructor door te geven true . Gelijktijdige wachtrijen kunnen blokken gelijktijdig aanroepen (vergelijkbaar met de globale gelijktijdige wachtrijen, maar mogelijk met meer overhead) en ondersteuningsblokken die worden ingediend met de verzendbarrière-API, waardoor bijvoorbeeld efficiënte lezersschrijverschema's kunnen worden geïmplementeerd.
Het optionele labelargument wordt gebruikt om het doel van de wachtrij te beschrijven en is nuttig tijdens foutopsporing en prestatieanalyse. Clients moeten volgens de conventie een label voor omgekeerde DNS-stijl doorgeven. Als er een label wordt opgegeven, wordt het gekopieerd. Als er geen label is opgegeven, retourneert labeleigenschap een lege C-tekenreeks. Voorbeeld:
var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");
Wachtrijen kunnen tijdelijk worden onderbroken en hervat met respectievelijk de functies Suspend()Resume() . De schorsing wordt gecontroleerd vóór het blokkeren en is niet preemptive.
De verzendwachtrij is SynchronizationContext op de hoogte en tenzij er aangepaste synchronisatiecontext is ingesteld voor de thread, wordt er een eigen synchronisatiecontext geïnstalleerd om ervoor te zorgen dat elke context-verzending in dezelfde verzendwachtrij terechtkomt.
Dispatch Barrier-API
De VERZENDbarrière-API is een mechanisme voor het verzenden van barrièreblokken naar een verzendwachtrij, vergelijkbaar met de DispatchAsync(Action)/DispatchSync(Action) methoden. Het maakt de implementatie van efficiënte lezers-/schrijfschema's mogelijk. Barrièreblokken gedragen zich alleen speciaal wanneer ze naar gelijktijdige wachtrijen worden verzonden ; op een dergelijke wachtrij wordt een barrièreblok pas uitgevoerd als alle blokken die eerder zijn ingediend bij de wachtrij zijn voltooid en alle blokken die naar de wachtrij zijn verzonden nadat een barrièreblok pas wordt uitgevoerd als het barrièreblok is voltooid. Wanneer deze worden verzonden naar een globale wachtrij of naar een niet-gelijktijdige wachtrij, gedragen barrièreblokken zich identiek aan blokken die met de DispatchAsync(Action)/DispatchSync(Action) methoden worden verzonden.
Constructors
| Naam | Description |
|---|---|
| DispatchQueue(String, Boolean) |
Hiermee maakt u een benoemde verzendwachtrij waarmee eventueel ingediende code gelijktijdig kan worden uitgevoerd. |
| DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchQueue(String) |
Hiermee maakt u een benoemde verzendwachtrij waarmee alle ingediende blokken worden geserialiseerd. |
Eigenschappen
| Naam | Description |
|---|---|
| Context |
Door de gebruiker gedefinieerde contextinformatie wordt gekoppeld aan een DispatchQueue. |
| CurrentQueue |
Ontwikkelaars mogen deze afgeschafte eigenschap niet gebruiken. |
| CurrentQueueLabel |
Label voor de huidige wachtrij. |
| DefaultGlobalQueue |
Retourneert de standaard globale wachtrij, een van de ingebouwde wachtrijen met de standaardprioriteit. |
| Handle |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DisposableObject) |
| Label |
Retourneert het label voor deze DispatchQueue. |
| MainQueue |
Retourneert de algemene hoofdwachtrij. |
| Owns |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DisposableObject) |
| QualityOfService |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
Methoden
| Naam | Description |
|---|---|
| Activate() |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DispatchObject) |
| ClearHandle() |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DisposableObject) |
| DispatchAfter(DispatchTime, Action) |
Deze keer wordt uitgevoerd op of na de opgegeven tijd. |
| DispatchAfter(DispatchTime, DispatchBlock) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchAsync(Action) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchAsync(DispatchBlock) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchBarrierAsync(Action) |
Verzendt een barrièreblok voor asynchrone uitvoering in een verzendwachtrij |
| DispatchBarrierAsync(DispatchBlock) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchBarrierSync(Action) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchBarrierSync(DispatchBlock) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchSync(Action) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| DispatchSync(DispatchBlock) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| Dispose() |
Alle resources die door dit object worden gebruikt, worden vrijgegeven. (Overgenomen van DisposableObject) |
| Dispose(Boolean) |
Releases van de resources die door dit object worden gebruikt. (Overgenomen van NativeObject) |
| Equals(Object) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DisposableObject) |
| GetCheckedHandle() |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DisposableObject) |
| GetGlobalQueue(DispatchQualityOfService) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| GetGlobalQueue(DispatchQueuePriority) |
Retourneert een van de globale verzendwachtrijen op basis van de aangevraagde prioriteit. |
| GetHashCode() |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DisposableObject) |
| GetQualityOfService(Int32) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| GetSpecific(IntPtr) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| InitializeHandle(NativeHandle) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DisposableObject) |
| MainIteration() |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| Release() |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DispatchObject) |
| Resume() |
Hiermee wordt de uitvoering van de wachtrij hervat. |
| Retain() |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DispatchObject) |
| SetSpecific(IntPtr, Object) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| SetTargetQueue(DispatchQueue) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. (Overgenomen van DispatchObject) |
| Submit(Action<Int32>, Int64) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| Suspend() |
De uitvoering van de wachtrij wordt onderbroken. |
Extensiemethoden
| Naam | Description |
|---|---|
| GetHandle(INativeObject) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |
| GetNonNullHandle(INativeObject, String) |
Biedt een takenwachtrij waarmee taken synchroon of asynchroon kunnen worden uitgevoerd. |