Ответ
Тип создаваемой очереди зависит от способа ее получения:
-
При создании пользовательской очереди
DispatchQueue(label:)по умолчанию создается последовательная (serial) очередь.// Serial очередь по умолчанию let serialQueue = DispatchQueue(label: "com.example.serial") -
Глобальные системные очереди (
DispatchQueue.global()) являются параллельными (concurrent).// Concurrent очередь с приоритетом .default DispatchQueue.global().async { print("Задача выполняется в параллельной очереди") }
Ключевое отличие:
- Serial очередь выполняет задачи строго по одной, в порядке добавления.
- Concurrent очередь может запускать несколько задач одновременно, используя пул потоков системы.
Почему такие умолчания: Serial очереди безопасны для доступа к общему ресурсу и проще для отладки. Concurrent системные очереди предназначены для параллельного выполнения независимых задач для увеличения производительности.