DispatchQueue Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно.
public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
inherit DispatchObject
- Наследование
- Наследование
Комментарии
Очереди — это базовый механизм планирования блоков для выполнения в рамках платформы 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) |
Предоставляет очередь задач, которая может выполнять задачи синхронно или асинхронно. |