Idioma

DispatchQueue Classe

Definição

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

Comentários

As filas são o mecanismo fundamental para agendar blocos para execução dentro da estrutura do Apple Grand Central Dispatch.

Todos os blocos enviados para filas de expedição são desaqueados na ordem FIFO. Por padrão, as filas criadas com o construtor padrão aguardam a conclusão do bloco dequeu anteriormente antes de desativar o próximo bloco. Esse comportamento de conclusão de FIFO às vezes é simplesmente descrito como uma "fila serial". As filas não estão associadas a nenhum thread específico de execução e os blocos enviados para filas independentes podem ser executados simultaneamente. Filas, como todos os objetos de expedição, são contadas de referência e filas recém-criadas têm uma contagem de referência de um.

Filas de expedição simultâneas são criadas passando true como o valor para o parâmetro simultâneo no construtor. Filas simultâneas podem invocar blocos simultaneamente (da mesma forma para as filas simultâneas globais, mas potencialmente com mais sobrecarga) e dar suporte a blocos de barreira enviados com a API de barreira de expedição, o que, por exemplo, permite a implementação de esquemas eficientes de leitor-gravador.

O argumento de rótulo opcional é usado para descrever a finalidade da fila e é útil durante a depuração e a análise de desempenho. Por convenção, os clientes devem passar um rótulo de estilo DNS reverso. Se um rótulo for fornecido, ele será copiado. Se um rótulo não for fornecido, a propriedade Label retornará uma cadeia de caracteres C vazia. Por exemplo:

var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");

As filas podem ser temporariamente suspensas e retomadas Suspend() com as funções e Resume() , respectivamente. A suspensão é verificada antes da execução do bloco e não é preemptiva.

A fila de expedição está SynchronizationContext ciente e, a menos que haja um conjunto de contexto de sincronização personalizado para o thread, ele instalará seu próprio contexto de sincronização para garantir que qualquer expedição de contexto acabe na mesma fila de expedição.

API de Barreira de Expedição

A API de barreira de expedição é um mecanismo para enviar blocos de barreira para uma fila de expedição, análogo aos DispatchAsync(Action)/DispatchSync(Action) métodos. Ele habilita a implementação de esquemas de leitor/gravador eficientes. Os blocos de barreira só se comportam especialmente quando enviados para filas simultâneas; em tal fila, um bloco de barreira não será executado até que todos os blocos enviados à fila anteriormente tenham sido concluídos, e todos os blocos enviados para a fila após um bloco de barreira não serão executados até que o bloco de barreira seja concluído. Quando enviados para uma fila global ou para uma fila não simultânea, os blocos de barreira se comportam de forma idêntica aos blocos enviados com os DispatchAsync(Action)/DispatchSync(Action) métodos.

Construtores

Nome Description
DispatchQueue(String, Boolean)

Cria uma fila de expedição nomeada que, opcionalmente, pode executar qualquer código enviado simultaneamente.

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 expedição nomeada que serializa todos os blocos enviados.

Propriedades

Nome Description
Context

Anexação de informações de contexto definidas pelo usuário a um DispatchQueue.

CurrentQueue

Os desenvolvedores não devem usar essa propriedade preterida.

CurrentQueueLabel

Rótulo para a fila atual.

DefaultGlobalQueue

Retorna a fila global padrão, que é uma das filas internas na prioridade padrão.

Handle

Fornece uma fila de tarefas que pode executar tarefas de forma síncrona ou assíncrona.

(Herdado de DisposableObject)
Label

Retorna o rótulo deste DispatchQueue.

MainQueue

Retorna 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 Description
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 essa hora em ou após a hora especificada.

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)

Envia um bloco de barreira para execução assíncrona em uma fila de expedição

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()

Libera todos os recursos usados por esse objeto.

(Herdado de DisposableObject)
Dispose(Boolean)

Libera os recursos usados por esse 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)

Retorna uma das filas de expedição global 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 execução da fila.

Métodos de Extensão

Nome Description
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.

Aplica-se a

Confira também