Поделиться через


DispatchQueue Класс

Определение

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
    inherit DispatchObject
Наследование
DispatchQueue
Наследование

Комментарии

Очереди — это базовый механизм планирования блоков для выполнения в рамках платформы Apple Grand Central Dispatch.

Все блоки, отправленные в очереди отправки, выводятся из очереди в порядке FIFO. По умолчанию очереди, созданные с помощью конструктора по умолчанию, ожидают завершения ранее выведенного из очереди блока, прежде чем выводить из очереди следующий блок. Такое поведение завершения FIFO иногда просто описывается как "последовательная очередь". Очереди не привязаны к какому-либо конкретному потоку выполнения, а блоки, отправленные в независимые очереди, могут выполняться одновременно. Очереди, как и все объекты диспетчеризации, считаются ссылочными, а вновь созданные очереди имеют один счетчик ссылок.

Параллельные очереди диспетчеризации создаются путем передачи true в качестве значения параметра concurrent в конструкторе. Параллельные очереди могут вызывать блоки одновременно (аналогично глобальным параллельным очередям, но потенциально с большими издержками) и поддерживать блоки барьеров, передаваемые с помощью API барьера диспетчеризации, который, например, обеспечивает реализацию эффективных схем чтения и записи.

Необязательный аргумент label используется для описания назначения очереди и полезен при отладке и анализе производительности. По соглашению клиенты должны передавать обратную метку стиля DNS. Если указана метка, она копируется. Если метка не указана, свойство Label возвращает пустую строку C. Например:

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

Очереди могут быть временно приостановлены и возобновлены с помощью функций Suspend() и Resume() соответственно. Приостановка проверяется перед выполнением блока и не является упреждающей.

Очередь диспетчеризации поддерживает T:System.Threading.SynchronizationContext , и если для потока не задан пользовательский контекст синхронизации, она установит собственный контекст синхронизации, чтобы гарантировать, что любая диспетчеризация контекста окажется в одной очереди диспетчеризации.

API барьера отправки

API барьера диспетчеризации — это механизм для отправки блоков барьеров в очередь отправки, аналогичный DispatchAsync(Action)/DispatchSync(Action) методам. Это позволяет реализовать эффективные схемы чтения и записи. Блоки барьеров ведут себя специально только при отправке в параллельные очереди; В такой очереди блок барьера не будет выполняться до тех пор, пока все блоки, отправленные в очередь ранее, не будут завершены, а все блоки, отправленные в очередь после блока барьера, не будут работать до тех пор, пока блок барьера не будет завершен. При отправке в глобальную очередь или в очередь, не являющейся параллельной, блоки барьеров ведут себя так же, как и блоки, отправленные DispatchAsync(Action)/DispatchSync(Action) с помощью методов .

Конструкторы

DispatchQueue(IntPtr)

Поверхность неуправляемой DispatchQueue в качестве управляемого объекта.

DispatchQueue(String)

Создает именованную очередь диспетчеризации, которая сериализует все отправленные блоки.

DispatchQueue(String, Boolean)

Создает именованную очередь диспетчеризации, которая может при необходимости одновременно выполнять любой отправленный код.

DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

Свойства

Context

Определяемая пользователем контекстная информация прикрепляется к DispatchQueue.

CurrentQueue

Разработчики не должны использовать это нерекомендуемое свойство.

CurrentQueueLabel

Метка для текущей очереди.

DefaultGlobalQueue

Возвращает глобальную очередь по умолчанию, которая является одной из встроенных очередей с приоритетом по умолчанию.

Handle

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
Label

Возвращает метку для этой dispatchQueue.

MainQueue

Возвращает основную глобальную очередь.

QualityOfService

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

Методы

Activate()

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
Check()
Устаревшие..

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
DispatchAfter(DispatchTime, Action)

Выполняется на этот раз в указанное время или позже указанного времени.

DispatchAfter(DispatchTime, DispatchBlock)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

DispatchAsync(Action)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

DispatchAsync(DispatchBlock)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

DispatchBarrierAsync(Action)

Отправляет блок барьера для асинхронного выполнения в очереди диспетчеризации.

DispatchBarrierAsync(DispatchBlock)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

DispatchBarrierSync(Action)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

DispatchBarrierSync(DispatchBlock)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

DispatchSync(Action)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

DispatchSync(DispatchBlock)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

Dispose()

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
Dispose(Boolean)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
Equals(Object)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

GetGlobalQueue(DispatchQueuePriority)

Возвращает одну из глобальных очередей диспетчеризации на основе запрошенного приоритета.

GetHashCode()

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

GetQualityOfService(Int32)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

GetSpecific(IntPtr)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

InitializeHandle(IntPtr)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от NativeObject)
MainIteration()

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

Release()

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
Resume()

Возобновляет выполнение очереди.

Retain()

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
SetSpecific(IntPtr, Object)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

SetTargetQueue(DispatchQueue)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

(Унаследовано от DispatchObject)
Submit(Action<Int32>, Int64)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

Suspend()

Приостанавливает выполнение очереди.

Операторы

Equality(DispatchQueue, DispatchQueue)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

Inequality(DispatchQueue, DispatchQueue)

Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.

Применяется к

См. также раздел