Compartilhar via


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
DispatchQueue
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 desempedidos na ordem FIFO. Por padrão, as filas criadas com o construtor padrão aguardam a conclusão do bloco de remoção de fila anteriormente antes de remover a fila do próximo bloco. Às vezes, esse comportamento de conclusão de FIFO é 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 a filas independentes podem ser executados simultaneamente. As filas, como todos os objetos de expedição, são contadas por referência e as filas recém-criadas têm uma contagem de referência de um.

As 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 que 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 é T:System.Threading.SynchronizationContext com reconhecimento e, a menos que haja um contexto de sincronização personalizado definido 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 permite a implementação de esquemas de leitor/gravador eficientes. Os blocos de barreira só se comportam especialmente quando enviados para filas simultâneas ; nessa 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 depois que um bloco de barreira não for executado 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

DispatchQueue(IntPtr)

Exibe um DispatchQueue não gerenciado como um objeto gerenciado.

DispatchQueue(String)

Cria uma fila de expedição nomeada que serializa todos os blocos enviados.

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.

Propriedades

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 DispatchObject)
Label

Retorna o rótulo para este DispatchQueue.

MainQueue

Retorna a fila global principal.

QualityOfService

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

Métodos

Activate()

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

(Herdado de DispatchObject)
Check()
Obsoleto.

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

(Herdado de DispatchObject)
DispatchAfter(DispatchTime, Action)

Executa desta vez em ou após o horário especificado.

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

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

(Herdado de DispatchObject)
Dispose(Boolean)

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

(Herdado de DispatchObject)
Equals(Object)

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 globais com base na prioridade solicitada.

GetHashCode()

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

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

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

(Herdado de NativeObject)
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.

Operadores

Equality(DispatchQueue, DispatchQueue)

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

Inequality(DispatchQueue, DispatchQueue)

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

Aplica-se a

Confira também