title: Difference between dispatch_async and dispatch_sync on serial queue?
body: <p>I've created a serial queue like this:</p>
  
  <pre><code>    dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL);
  </code></pre>
  
  <p>What's the difference between <code>dispatch_async</code> called like this</p>
  
  <pre><code> dispatch_async(_serialQueue, ^{ /* TASK 1 */ });
   dispatch_async(_serialQueue, ^{ /* TASK 2 */ });
  </code></pre>
  
  <p>And <code>dispatch_sync</code> called like this on this serial queue?</p>
  
  <pre><code> dispatch_sync(_serialQueue, ^{ /* TASK 1 */ });
   dispatch_sync(_serialQueue, ^{ /* TASK 2 */ });
  </code></pre>
  
  <p>My understanding is that, regardless of which dispatch method is used, <code>TASK 1</code> will be executed and completed before <code>TASK 2</code>, correct?</p>