Вопрос проверяет понимание типов очередей GCD и их влияния на параллельность выполнения задач.
serial (последовательная) очередь выполняет одну задачу за раз в порядке добавления.concurrent (параллельная) очередь начинает задачи в порядке добавления, но может выполнять их одновременно, если есть свободные потоки.
Последовательная очередь:
Гарантирует выполнение задач по очереди, одна за другой.
Удобна для защиты общих ресурсов без дополнительных примитивов.
Параллельная очередь:
Позволяет одновременный старт нескольких задач.
Задачи могут завершиться в любом порядке.
Создание очередей:
let serialQ = DispatchQueue(label: "serial")
let concurrentQ = DispatchQueue(label: "concurrent", attributes: .concurrent)Сценарии использования:
serial — для последовательных операций, обновления UI, защиты данных.
concurrent — для фоновых задач, скачивания файлов, вычислений.
Вывод:
Правильный выбор очереди влияет на производительность и безопасность доступа к разделяемым ресурсам.