DispatchQueue Classe

Definizione

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
    inherit DispatchObject
Ereditarietà
DispatchQueue
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 di invio vengono dequeuati nell'ordine FIFO. Per impostazione predefinita, le code create con il costruttore predefinito attendono il completamento del blocco dequeued precedentemente prima di dequeuare il blocco successivo. Questo comportamento di completamento FIFO è talvolta descritto semplicemente come "coda seriale". Le code non sono associate a un thread specifico di esecuzione e blocchi inviati a code indipendenti possono essere eseguite simultaneamente. Le code, come tutti gli oggetti dispatch, vengono conteggiati e le code appena create hanno un numero di riferimenti di uno.

Le code di invio simultanee vengono create passando true come valore per il parametro simultaneo del costruttore. Le code simultanee possono richiamare blocchi simultaneamente (analogamente alle code simultanee globali, ma potenzialmente con un sovraccarico maggiore) e supportare blocchi di barriera inviati con l'API barriera di invio, che consente, ad esempio, l'implementazione di schemi di 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 inversa. Se viene fornita 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 rispettivamente con le funzioni Suspend() e Resume() . La sospensione viene controllata prima di bloccare l'esecuzione e non è preemptive.

La coda di invio è a meno che non sia presente un contesto di sincronizzazione personalizzato per il thread che installerà il proprio contesto di sincronizzazione per assicurarsi che l'invio del contesto finisca nella stessa coda di invio.

API Di distribuzione barriera

L'API della barriera di invio è un meccanismo per l'invio di blocchi di barriere a una coda di invio, analogamente ai DispatchAsync(Action)/DispatchSync(Action) metodi. Consente l'implementazione di schemi di lettura/writer efficienti. I blocchi di barriera si comportano appositamente quando inviati alle code simultanee ; in una coda di questo tipo, un blocco di barriere non verrà eseguito fino a quando tutti i blocchi inviati alla coda precedentemente sono stati completati e tutti i blocchi inviati alla coda dopo l'esecuzione di un blocco di barriere non verranno eseguiti fino al completamento del blocco di barriere. Quando viene inviata a una coda globale o a una coda non simultanea, i blocchi di barriera si comportano in modo identico ai blocchi inviati con i DispatchAsync(Action)/DispatchSync(Action) metodi.

Costruttori

DispatchQueue(IntPtr)

Visualizza un oggetto DispatchQueue non gestito come oggetto gestito.

DispatchQueue(String)

Crea una coda di invio denominata che serializza tutti i blocchi inviati.

DispatchQueue(String, Boolean)

Crea una coda di invio denominata che può eseguire facoltativamente qualsiasi codice inviato simultaneamente.

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

Proprietà

Context

Informazioni sul contesto definite dall'utente si associano a un 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 in base alla priorità predefinita.

Handle

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
Label

Restituisce l'etichetta per dispatchQueue.

MainQueue

Restituisce la coda globale principale.

QualityOfService

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

Metodi

Activate()

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
Check()
Obsoleti.

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
DispatchAfter(DispatchTime, Action)

Esegue questa volta o dopo l'ora specificata.

DispatchAfter(DispatchTime, DispatchBlock)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

DispatchAsync(Action)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

DispatchAsync(DispatchBlock)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

DispatchBarrierAsync(Action)

Invia un blocco di barriere per l'esecuzione asincrona in una coda di invio

DispatchBarrierAsync(DispatchBlock)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

DispatchBarrierSync(Action)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

DispatchBarrierSync(DispatchBlock)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

DispatchSync(Action)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

DispatchSync(DispatchBlock)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

Dispose()

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
Dispose(Boolean)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
Equals(Object)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

GetGlobalQueue(DispatchQueuePriority)

Restituisce una delle code di invio globali in base alla priorità richiesta.

GetHashCode()

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

GetQualityOfService(Int32)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

GetSpecific(IntPtr)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

InitializeHandle(IntPtr)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da NativeObject)
MainIteration()

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

Release()

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
Resume()

Riprende l'esecuzione della coda.

Retain()

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
SetSpecific(IntPtr, Object)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

SetTargetQueue(DispatchQueue)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

(Ereditato da DispatchObject)
Submit(Action<Int32>, Int64)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

Suspend()

Sospende l'esecuzione della coda.

Operatori

Equality(DispatchQueue, DispatchQueue)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

Inequality(DispatchQueue, DispatchQueue)

Fornisce una coda di attività che può eseguire attività in modo sincrono o asincrono.

Si applica a

Vedi anche