Lenguaje

DispatchQueue Clase

Definición

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
    inherit DispatchObject
Herencia

Comentarios

Las colas son el mecanismo fundamental para programar bloques para su ejecución en el marco de distribución de Apple Grand Central.

Todos los bloques enviados a las colas de distribución se ponen en cola en orden FIFO. De forma predeterminada, las colas creadas con el constructor predeterminado esperan a que se complete el bloque previamente desqueuado antes de poner en cola el siguiente bloque. Este comportamiento de finalización de FIFO a veces se describe simplemente como una "cola serie". Las colas no están enlazadas a ningún subproceso específico de ejecución y los bloques enviados a colas independientes pueden ejecutarse simultáneamente. Las colas, al igual que todos los objetos de envío, se cuentan las referencias y las colas recién creadas tienen un recuento de referencias de uno.

Las colas de distribución simultáneas se crean pasando true como valor para el parámetro simultáneo en el constructor. Las colas simultáneas pueden invocar bloques simultáneamente (de forma similar a las colas simultáneas globales, pero potencialmente con más sobrecarga) y admitir bloques de barrera enviados con la API de barrera de distribución, lo que, por ejemplo, permite la implementación de esquemas eficaces de lector-escritor.

El argumento de etiqueta opcional se usa para describir el propósito de la cola y es útil durante la depuración y el análisis de rendimiento. Por convención, los clientes deben pasar una etiqueta de estilo DNS inverso. Si se proporciona una etiqueta, se copia. Si no se proporciona una etiqueta, la propiedad Label devuelve una cadena C vacía. Por ejemplo:

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

Las colas se pueden suspender y reanudar temporalmente con las funciones Suspend() y Resume() respectivamente. La suspensión se comprueba antes de bloquear la ejecución y no es preferente.

La cola de distribución es SynchronizationContext consciente y, a menos que haya un contexto de sincronización personalizado establecido para el subproceso, instalará su propio contexto de sincronización para asegurarse de que cualquier envío de contexto termina en la misma cola de distribución.

Dispatch Barrier API

La API de barrera de distribución es un mecanismo para enviar bloques de barrera a una cola de distribución, análoga a los DispatchAsync(Action)/DispatchSync(Action) métodos. Permite la implementación de esquemas de lector y escritor eficaces. Los bloques de barrera solo se comportan especialmente cuando se envían a colas simultáneas; en esta cola, un bloque de barrera no se ejecutará hasta que se hayan completado todos los bloques enviados a la cola anteriormente, y los bloques enviados a la cola después de que un bloque de barrera no se ejecuten hasta que se haya completado el bloque de barrera. Cuando se envía a una cola global o a una cola no simultánea, los bloques de barrera se comportan de forma idéntica a los bloques enviados con los DispatchAsync(Action)/DispatchSync(Action) métodos.

Constructores

Nombre Description
DispatchQueue(String, Boolean)

Crea una cola de distribución con nombre que puede ejecutar opcionalmente cualquier código enviado simultáneamente.

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchQueue(String)

Crea una cola de distribución con nombre que serializa todos los bloques enviados.

Propiedades

Nombre Description
Context

Información de contexto definida por el usuario adjunta a dispatchQueue.

CurrentQueue

Los desarrolladores no deben usar esta propiedad en desuso.

CurrentQueueLabel

Etiqueta de la cola actual.

DefaultGlobalQueue

Devuelve la cola global predeterminada, que es una de las colas integradas con la prioridad predeterminada.

Handle

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DisposableObject)
Label

Devuelve la etiqueta de este DispatchQueue.

MainQueue

Devuelve la cola global principal.

Owns

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DisposableObject)
QualityOfService

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

Métodos

Nombre Description
Activate()

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DispatchObject)
ClearHandle()

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DisposableObject)
DispatchAfter(DispatchTime, Action)

Ejecuta esta hora en o después de la hora especificada.

DispatchAfter(DispatchTime, DispatchBlock)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchAsync(Action)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchAsync(DispatchBlock)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchBarrierAsync(Action)

Envía un bloque de barrera para la ejecución asincrónica en una cola de distribución.

DispatchBarrierAsync(DispatchBlock)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchBarrierSync(Action)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchBarrierSync(DispatchBlock)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchSync(Action)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

DispatchSync(DispatchBlock)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

Dispose()

Libera todos los recursos usados por este objeto.

(Heredado de DisposableObject)
Dispose(Boolean)

Libera los recursos usados por este objeto.

(Heredado de NativeObject)
Equals(Object)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DisposableObject)
GetCheckedHandle()

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DisposableObject)
GetGlobalQueue(DispatchQualityOfService)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

GetGlobalQueue(DispatchQueuePriority)

Devuelve una de las colas de distribución globales en función de la prioridad solicitada.

GetHashCode()

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DisposableObject)
GetQualityOfService(Int32)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

GetSpecific(IntPtr)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

InitializeHandle(NativeHandle)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DisposableObject)
MainIteration()

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

Release()

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DispatchObject)
Resume()

Reanuda la ejecución de la cola.

Retain()

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DispatchObject)
SetSpecific(IntPtr, Object)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

SetTargetQueue(DispatchQueue)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

(Heredado de DispatchObject)
Submit(Action<Int32>, Int64)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

Suspend()

Suspende la ejecución de la cola.

Métodos de extensión

Nombre Description
GetHandle(INativeObject)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

GetNonNullHandle(INativeObject, String)

Proporciona una cola de tareas que puede realizar tareas de forma sincrónica o asincrónica.

Se aplica a

Consulte también