Actualización para swift 5
Cola de serie
let serialQueue = DispatchQueue.init(label: "serialQueue")
serialQueue.async {
// code to execute
}
Cola concurrente
let concurrentQueue = DispatchQueue.init(label: "concurrentQueue", qos: .background, attributes: .concurrent, autoreleaseFrequency: .inherit, target: nil)
concurrentQueue.async {
// code to execute
}
De la documentación de Apple :
Parámetros
etiqueta
Una etiqueta de cadena para adjuntar a la cola para identificarla de forma exclusiva en las herramientas de depuración, como instrumentos, muestras, disparos de pila e informes de fallos. Debido a que las aplicaciones, las bibliotecas y los marcos pueden crear sus propias colas de despacho, se recomienda un estilo de nomenclatura de DNS inverso (com.example.myqueue). Este parámetro es opcional y puede ser NULL.
qos
El nivel de calidad de servicio para asociar con la cola. Este valor determina la prioridad a la que el sistema programa tareas para su ejecución. Para obtener una lista de valores posibles, vea DispatchQoS.QoSClass.
atributos
Los atributos para asociar con la cola. Incluya el atributo concurrente para crear una cola de despacho que ejecute tareas simultáneamente. Si omite ese atributo, la cola de despacho ejecuta tareas en serie.
AutoreleaseFrequency
La frecuencia con la que se liberan automáticamente los objetos creados por los bloques que la cola programa. Para obtener una lista de posibles valores, vea DispatchQueue.AutoreleaseFrequency .
objetivo
La cola de destino en la que ejecutar bloques. Especifique DISPATCH_TARGET_QUEUE_DEFAULT si desea que el sistema proporcione una cola que sea apropiada para el objeto actual.