[GCD] Очередь диспетчеризации:... Заметка
DEV Community на русском

[GCD] Очередь диспетчеризации: FIFO, приоритет и типы очередей

DispatchQueue — это объект, куда в GCD отправляется работа, принимающий замыкания вместо потоков. Эта очередь затем управляет тем, когда и как выполнять эти блоки кода. Она работает по принципу "первым пришел — первым ушел" (FIFO), гарантируя, что задачи начинаются в том порядке, в котором они были отправлены, хотя и не обязательно в том порядке, в котором они завершаются. Система назначает приоритет, известный как Quality of Service (QoS), каждой отправленной задаче. Эти приоритеты варьируются от .userInteractive для немедленных обновлений пользовательского интерфейса до .background для незаметных задач. Задачи с более высоким приоритетом получают больше системных ресурсов, а неправильное использование приоритетов может снизить производительность. GCD предлагает три способа получения DispatchQueue: основная последовательная очередь, привязанная к потоку пользовательского интерфейса, предоставляемые системой глобальные параллельные очереди для каждого уровня QoS и пользовательские очереди, созданные разработчиками. Пользовательские очереди по умолчанию являются последовательными, но могут быть сделаны параллельными. Основная очередь имеет решающее значение для всех операций, связанных с пользовательским интерфейсом. Глобальные очереди являются общими и управляются системой, с выделенной очередью для каждого QoS. Пользовательские очереди позволяют разработчикам определять свои собственные среды последовательного или параллельного выполнения задач. Метка для пользовательских очередей предназначена исключительно для отладки. В будущих статьях будут рассмотрены синхронная и асинхронная отправка в последовательных и параллельных очередях.