title: When are GCD queues used and when do you know you need them? Swift
body: <p>After reading about Concurrent and Serial queues, sync and async, I think I have an idea about how to create queues and the order they are executed in. My problem is that in any of the tutorials I have seen, none of them actually tell you many use cases. For example:</p>
  
  <p>I have a network manager that uses URLSessions and serializes json to send a request to my api. Does it make sense to wrap it in a <code>.utility</code> Queue or in a <code>.userInitiated</code> or do I just don't wrap it in a queue. </p>
  
  <pre><code>let task = LoginTask(username: username, password: password)
  
  let networkQueue = DispatchQueue(label: "com.messenger.network", 
  qos: DispatchQoS.userInitiated)
  
  networkQueue.async {
      task.dataTask(in: dispatcher) { (user, httpCode, error) in
          self.presenter?.loginUserResponse(user: user, httpCode: httpCode, error: error)
      }
  }
  </code></pre>
  
  <p>My question is: Is there any guidlines I can follow to know when there is a need to use queues or not because I cant find this information anywhere. I realise apple provides example usage howver it is very vague</p>