title: Is it possible to specify the `DispatchQueue` for `DispatchQueue.concurrentPerform`?
body: <p><a href="https://developer.apple.com/documentation/dispatch/1453050-dispatch_apply" rel="noreferrer"><code>dispatch_apply</code></a> takes a dispatch queue as a parameter, which allows you to choose which queue to execute the block on.</p>
  
  <p>My understanding is that <code>DispatchQueue.concurrentPerform</code> in Swift is meant to replace <code>dispatch_apply</code>. But this function does not take a dispatch queue as a parameter. After googling around, I found <a href="https://www.raywenderlich.com/5371-grand-central-dispatch-tutorial-for-swift-4-part-2-2" rel="noreferrer">this GCD tutorial</a> which has this code:</p>
  
  <pre><code>let _ = DispatchQueue.global(qos: .userInitiated)
  DispatchQueue.concurrentPerform(iterations: addresses.count) { index in
      // do work here
  }
  </code></pre>
  
  <p>And explains:</p>
  
  <blockquote>
    <p>This implementation includes a curious line of code: <code>let _ = DispatchQueue.global(qos: .userInitiated)</code>. Calling this tells causes GCD to use a queue with a <code>.userInitiated</code> quality of service for the concurrent calls.</p>
  </blockquote>
  
  <p>My question is, does this actually work to specify the QoS? If so, how?</p>
  
  <p>It would kind of make sense to me that there is no way to specify the queue for this, because a serial queue makes no sense in this context and only the highest QoS really makes sense given that this is a synchronous blocking function. But I can't find any documentation as to why it is possible to specify a queue with <code>dispatch_apply</code> but impossible(?) with <code>DispatchQueue.concurrentPerform</code>.</p>