Какую очередь создает OperationQueue() по умолчанию?

«Какую очередь создает OperationQueue() по умолчанию?» — вопрос из категории Многопоточность, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Конструктор OperationQueue() создает параллельную (concurrent) фоновую очередь.

Ключевые характеристики по умолчанию:

  • Тип: Concurrent (параллельная). Операции могут выполняться одновременно, если нет зависимостей.
  • Поток: Фоновый (не главный).
  • Максимум операций (maxConcurrentOperationCount): Устанавливается в -1, что позволяет системе определять оптимальное количество параллельных задач на основе числа ядер и текущей загрузки системы.
  • Качество обслуживания (qualityOfService): .background (низкий приоритет).

Пример и управление:

let queue = OperationQueue()
// Делаем очередь последовательной (serial)
queue.maxConcurrentOperationCount = 1
// Повышаем приоритет очереди
queue.qualityOfService = .userInitiated

Почему не serial? Параллельная очередь по умолчанию лучше использует ресурсы многоядерных процессоров для независимых задач.