Lingua

DispatchQueue Classe

Definizione

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.

Si applica a

Vedi anche