DispatchQueue Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono.
public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
inherit DispatchObject
- Ereditarietà
Commenti
Le code sono il meccanismo fondamentale per la pianificazione dei blocchi per l'esecuzione all'interno del framework Apple Grand Central Dispatch.
Tutti i blocchi inviati alle code dispatch vengono dequeuati nell'ordine FIFO. Per impostazione predefinita, le code create con il costruttore predefinito attendono il completamento del blocco dequeued in precedenza prima di annullare la coda del blocco successivo. Questo comportamento di completamento FIFO viene talvolta descritto semplicemente come "coda seriale". Le code non sono associate a un thread specifico di esecuzione e i blocchi inviati a code indipendenti possono essere eseguiti simultaneamente. Le code, come tutti gli oggetti dispatch, vengono conteggiate e le code appena create hanno un conteggio dei riferimenti pari a uno.
Le code dispatch simultanee vengono create passando true come valore per il parametro simultaneo nel costruttore. Le code simultanee possono richiamare blocchi simultaneamente (analogamente alle code simultanee globali, ma potenzialmente con un sovraccarico maggiore) e supportare blocchi di barriere inviati con l'API della barriera di distribuzione, che consente ad esempio l'implementazione di schemi reader-writer efficienti.
L'argomento etichetta facoltativo viene usato per descrivere lo scopo della coda ed è utile durante il debug e l'analisi delle prestazioni. Per convenzione, i client devono passare un'etichetta di stile DNS inverso. Se viene specificata un'etichetta, viene copiata. Se non viene specificata un'etichetta, la proprietà Label restituisce una stringa C vuota. Ad esempio:
var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");
Le code possono essere sospese temporaneamente e riprese con le funzioni Suspend() e Resume() rispettivamente. La sospensione viene controllata prima di bloccare l'esecuzione e non è preemptive.
La coda dispatch è SynchronizationContext consapevole e, a meno che non sia presente un contesto di sincronizzazione personalizzato per il thread, verrà installato il proprio contesto di sincronizzazione per garantire che qualsiasi invio del contesto finisca nella stessa coda di distribuzione.
Dispatch Barrier API
L'API della barriera dispatch è un meccanismo per l'invio di blocchi di barriere a una coda dispatch, analogamente ai DispatchAsync(Action)/DispatchSync(Action) metodi. Consente l'implementazione di schemi di lettura/scrittura efficienti. I blocchi di barriere si comportano in modo speciale solo quando vengono inviati a code simultanee; in una coda di questo tipo, un blocco barriera non verrà eseguito fino al completamento di tutti i blocchi inviati alla coda in precedenza e tutti i blocchi inviati alla coda dopo che un blocco barriera non verrà eseguito fino al completamento del blocco barriera. Quando vengono inviati a una coda globale o a una coda non simultanea, i blocchi barriera si comportano in modo identico ai blocchi inviati con i DispatchAsync(Action)/DispatchSync(Action) metodi .
Costruttori
| Nome | Descrizione |
|---|---|
| DispatchQueue(String, Boolean) |
Crea una coda dispatch denominata che può facoltativamente eseguire qualsiasi codice inviato contemporaneamente. |
| DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchQueue(String) |
Crea una coda dispatch denominata che serializza tutti i blocchi inviati. |
Proprietà
| Nome | Descrizione |
|---|---|
| Context |
Collegamento di informazioni sul contesto definite dall'utente a dispatchQueue. |
| CurrentQueue |
Gli sviluppatori non devono usare questa proprietà deprecata. |
| CurrentQueueLabel |
Etichetta per la coda corrente. |
| DefaultGlobalQueue |
Restituisce la coda globale predefinita, ovvero una delle code predefinite con la priorità predefinita. |
| Handle |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DisposableObject) |
| Label |
Restituisce l'etichetta per questo oggetto DispatchQueue. |
| MainQueue |
Restituisce la coda globale principale. |
| Owns |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DisposableObject) |
| QualityOfService |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
Metodi
| Nome | Descrizione |
|---|---|
| Activate() |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DispatchObject) |
| ClearHandle() |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DisposableObject) |
| DispatchAfter(DispatchTime, Action) |
Esegue questa volta in o dopo l'ora specificata. |
| DispatchAfter(DispatchTime, DispatchBlock) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchAsync(Action) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchAsync(DispatchBlock) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchBarrierAsync(Action) |
Invia un blocco barriera per l'esecuzione asincrona in una coda dispatch |
| DispatchBarrierAsync(DispatchBlock) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchBarrierSync(Action) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchBarrierSync(DispatchBlock) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchSync(Action) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| DispatchSync(DispatchBlock) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| Dispose() |
Rilascia tutte le risorse usate da questo oggetto. (Ereditato da DisposableObject) |
| Dispose(Boolean) |
Rilascia le risorse usate da questo oggetto. (Ereditato da NativeObject) |
| Equals(Object) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DisposableObject) |
| GetCheckedHandle() |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DisposableObject) |
| GetGlobalQueue(DispatchQualityOfService) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| GetGlobalQueue(DispatchQueuePriority) |
Restituisce una delle code di dispatch globali in base alla priorità richiesta. |
| GetHashCode() |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DisposableObject) |
| GetQualityOfService(Int32) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| GetSpecific(IntPtr) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| InitializeHandle(NativeHandle) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DisposableObject) |
| MainIteration() |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| Release() |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DispatchObject) |
| Resume() |
Riprende l'esecuzione della coda. |
| Retain() |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DispatchObject) |
| SetSpecific(IntPtr, Object) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| SetTargetQueue(DispatchQueue) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. (Ereditato da DispatchObject) |
| Submit(Action<Int32>, Int64) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| Suspend() |
Sospende l'esecuzione della coda. |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetHandle(INativeObject) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |
| GetNonNullHandle(INativeObject, String) |
Fornisce una coda di attività in grado di eseguire attività in modo sincrono o asincrono. |