DispatchQueue Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona.
public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
inherit DispatchObject
- Herança
Observações
As filas são o mecanismo fundamental para agendar blocos para execução dentro do framework Apple Grand Central Dispatch.
Todos os blocos submetidos às filas de despacho são desalinhados por ordem FIFO. Por defeito, as filas criadas com o construtor padrão aguardam que o bloco previamente retirado da fila seja concluído antes de eliminar o bloco seguinte. Este comportamento de conclusão FIFO é por vezes simplesmente descrito como uma "fila serial". As filas não estão vinculadas a nenhum thread específico de execução e os blocos submetidos a filas independentes podem ser executados simultaneamente. As filas, como todos os objetos de despacho, são contadas por referência e as filas recém-criadas têm uma contagem de referência de um.
As filas de despacho concorrente são criadas passando true como valor do parâmetro concorrente no construtor. As filas concorrentes podem invocar blocos em simultâneo (de forma semelhante às filas globais concorrentes, mas potencialmente com maior sobrecarga) e suportam blocos de barreira submetidos com a API de barreira de despacho, que, por exemplo, permite a implementação de esquemas eficientes de leitor-escritor.
O argumento opcional do rótulo é usado para descrever o propósito da fila e é útil durante a depuração e análise de desempenho. Por convenção, os clientes devem passar um rótulo de estilo DNS invertido. Se for fornecida uma etiqueta, ela é copiada. Se não for fornecido um rótulo, então a propriedade Rótulo devolve uma cadeia C vazia. Por exemplo:
var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");
As filas podem ser temporariamente suspensas e retomadas com as funções Suspend() e Resume() respetivamente. A suspensão é verificada antes da execução do bloco e não é preventiva.
A fila de despacho está SynchronizationContext consciente e, a menos que haja um contexto de sincronização personalizado definido para o thread, instala o seu próprio contexto de sincronização para garantir que qualquer despacho de contexto acaba na mesma fila de despacho.
API de barreira de despacho
A API de barreira de despacho é um mecanismo para submeter blocos de barreira a uma fila de despacho, análogo aos DispatchAsync(Action)/DispatchSync(Action) métodos. Permite a implementação de esquemas eficientes para leitor/escritor. Os blocos de barreira só se comportam especialmente quando submetidos a filas concorrentes; numa fila deste tipo, um bloco de barreira não será executado até que todos os blocos submetidos anteriormente à fila estejam concluídos, e quaisquer blocos submetidos à fila após um bloco de barreira não serão executados até que o bloco de barreira esteja concluído. Quando submetidos a uma fila global ou a uma fila não concorrente, os blocos de barreira comportam-se de forma idêntica aos blocos submetidos com os DispatchAsync(Action)/DispatchSync(Action) métodos.
Construtores
| Nome | Descrição |
|---|---|
| DispatchQueue(String, Boolean) |
Cria uma fila de dispatch nomeada que pode opcionalmente executar qualquer código submetido em simultâneo. |
| DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchQueue(String) |
Cria uma fila de dispatch nomeada que serializa todos os blocos submetidos. |
Propriedades
| Nome | Descrição |
|---|---|
| Context |
Informação de contexto definida pelo utilizador anexa a uma DispatchQueue. |
| CurrentQueue |
Os promotores não devem usar esta propriedade obsoleta. |
| CurrentQueueLabel |
Etiqueta para a fila atual. |
| DefaultGlobalQueue |
Devolve a fila global predefinida, que é uma das filas incorporadas com prioridade predefinida. |
| Handle |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DisposableObject) |
| Label |
Devolve a etiqueta para esta DispatchQueue. |
| MainQueue |
Devolve a fila global principal. |
| Owns |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DisposableObject) |
| QualityOfService |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
Métodos
| Nome | Descrição |
|---|---|
| Activate() |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DispatchObject) |
| ClearHandle() |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DisposableObject) |
| DispatchAfter(DispatchTime, Action) |
Executa este tempo no prazo especificado ou após o tempo. |
| DispatchAfter(DispatchTime, DispatchBlock) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchAsync(Action) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchAsync(DispatchBlock) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchBarrierAsync(Action) |
Submete um bloco de barreira para execução assíncrona numa fila de despacho |
| DispatchBarrierAsync(DispatchBlock) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchBarrierSync(Action) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchBarrierSync(DispatchBlock) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchSync(Action) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| DispatchSync(DispatchBlock) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| Dispose() |
Liberta todos os recursos utilizados por este objeto. (Herdado de DisposableObject) |
| Dispose(Boolean) |
Liberta os recursos usados por este objeto. (Herdado de NativeObject) |
| Equals(Object) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DisposableObject) |
| GetCheckedHandle() |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DisposableObject) |
| GetGlobalQueue(DispatchQualityOfService) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| GetGlobalQueue(DispatchQueuePriority) |
Devolve uma das filas globais de despacho com base na prioridade solicitada. |
| GetHashCode() |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DisposableObject) |
| GetQualityOfService(Int32) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| GetSpecific(IntPtr) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| InitializeHandle(NativeHandle) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DisposableObject) |
| MainIteration() |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| Release() |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DispatchObject) |
| Resume() |
Retoma a execução da fila. |
| Retain() |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DispatchObject) |
| SetSpecific(IntPtr, Object) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| SetTargetQueue(DispatchQueue) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. (Herdado de DispatchObject) |
| Submit(Action<Int32>, Int64) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| Suspend() |
Suspende a passagem da fila. |
Métodos da Extensão
| Nome | Descrição |
|---|---|
| GetHandle(INativeObject) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |
| GetNonNullHandle(INativeObject, String) |
Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona. |