title: Concurrency and synchronous execution
body: <p>I was reading OReilly's <strong>iOS6 Programming Cookbook</strong> and am confused about something. Quoting from page 378, chapter 6 "Concurrency":</p>
  
  <p><em>For any task that doesn’t involve the UI, you can use global concurrent queues in GCD.
  These allow either synchronous or asynchronous execution. <strong>But synchronous execution
  does not mean your program waits for the code to finish before continuing. It
  simply means that the concurrent queue will wait until your task has finished before it
  continues to the next block of code on the queue.</strong> When you put a block object on a
  concurrent queue, your own program always continues right away without waiting for
  the queue to execute the code. This is because concurrent queues, as their name implies,
  run their code on threads other than the main thread.</em></p>
  
  <p>I bolded the text that intrigues me. I think it is false because as I've just learned today synchronous execution means precisely that the program waits for the code to finish before continuing.</p>
  
  <p>Is this correct or how does it really work?</p>