Обновление для Swift 5
Serial Queue
let serialQueue = DispatchQueue.init(label: "serialQueue")
serialQueue.async {
// code to execute
}
Параллельная очередь
let concurrentQueue = DispatchQueue.init(label: "concurrentQueue", qos: .background, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil)
concurrentQueue.async {
// code to execute
}
Из документации Apple :
параметры
метка
Метка строки, прикрепляемая к очереди, чтобы однозначно идентифицировать ее в инструментах отладки, таких как «Инструменты», «Образцы», «Стеки» и отчеты о сбоях. Поскольку приложения, библиотеки и платформы могут создавать свои собственные очереди отправки, рекомендуется стиль именования обратного DNS (com.example.myqueue). Этот параметр является необязательным и может иметь значение NULL.
QoS
Уровень качества обслуживания для связи с очередью. Это значение определяет приоритет, при котором система планирует задачи для выполнения. Список возможных значений см. В разделе DispatchQoS.QoSClass.
атрибуты
Атрибуты, связанные с очередью. Включите параллельный атрибут для создания очереди отправки, которая выполняет задачи одновременно. Если этот атрибут не указан, очередь отправки выполняет задачи последовательно.
autoreleaseFrequency
Частота автоматического высвобождения объектов, созданных блоками, запланированными для очереди. Список возможных значений см . В разделе DispatchQueue.AutoreleaseFrequency .
цель
Целевая очередь для выполнения блоков. Укажите DISPATCH_TARGET_QUEUE_DEFAULT, если вы хотите, чтобы система предоставила очередь, подходящую для текущего объекта.