DispatchQueue Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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. |