Because each dispatch queue consumes thread resources, creating additional concurrent dispatch queues exacerbates the thread consumption problem. Instead of creating private concurrent queues, submit tasks to one of the global concurrent dispatch queues. For serial tasks, set the target of your serial queue to one of the global concurrent queues. That way, you can maintain the serialized behavior of the queue while minimizing the number of separate queues creating threads.
https://developer.apple.com/documentation/dispatch/dispatchqueue
When the documentation says to create a serial DispatchQueue by setting the target of the queue to a global concurrent queue, is this what they mean?
let q = DispatchQueue(label: "someSerialQueue", qos: .default, attributes: [], autoreleaseFrequency: .inherit, target: .global())
Also, is this really preferred over simply labeling it:
let q = DispatchQueue(label: "someSerialQueue")