Описание тега operationqueue
Очередь операций является эквивалентом параллельной очереди диспетчеризации в Cocoa и реализуется классом. Он построен на платформе grand-central-dispatch (GCD). Теперь он в значительной степени вытеснен swift-concurrencyбыстрый параллелизм .
Несколько характеристик очередей операций, которые отличают их от очередей отправки GCD:
В то время как очереди отправки всегда выполняют задачи в порядке поступления, очереди операций учитывают другие факторы при определении порядка выполнения задач. Основным среди этих факторов является то, зависит ли данная задача от выполнения других задач. Вы настраиваете зависимости при определении своих задач и можете использовать их для создания сложных графиков порядка выполнения для ваших задач.
Очереди операций можно использовать для управления зависимостями между задачами, которые сами по себе являются асинхронными (например, сетевой запрос). Чтобы обернуть асинхронную задачу втребует создания пользовательского подкласса, который выполняет необходимый KVO для
isFinished
и т.д. См . .Очереди операций полезны при попытке контролировать степень параллелизма. Очереди отправки являются либо последовательными, либо параллельными, но не позволяют контролировать степень параллелизма.
объекты предлагают более богатый механизм для обработки отмены, благодаря чему вычислительный процесс может не только периодически проверять
isCancelled
, но там, где это уместно, вы можете переопределитьcancel
метод (например, для упреждающей отмены асинхронной задачи, заключенной в пользовательский подкласс).Можно установить зависимости между Oobjects.
Задачи, которые вы отправляете в очередь операций, могут быть закрытием,
BlockOperation
, или . Объект операции — это объект, который инкапсулирует работу, которую вы хотите выполнить, и любые данные, необходимые для ее выполнения. Поскольку класс по существу является абстрактным базовым классом, вы обычно определяете собственные подклассы для выполнения ваших задач. Однако инфраструктура Foundation включает в себя несколько конкретных подклассов, которые можно создавать и использовать как есть для выполнения задач.
Объекты операций генерируют уведомления наблюдения за ключом и значением (KVO), которые могут быть полезным способом отслеживания хода выполнения вашей задачи. Хотя очереди операций всегда выполняют операции одновременно, вы можете использовать зависимости, чтобы при необходимости обеспечить их последовательное выполнение.
В настоящее время, если вы пытаетесь запланировать асинхронные задачи, можно было бы рассмотреть вместо очереди операций.
Смотрите также
-
OperationQueue
документация -
Operation
документациядокументацию - Руководство по параллельному программированию