title: iPhone - Grand Central Dispatch main thread
body: <p>I have been using with success, grand central dispatch in my apps, but I was wondering what is the real advantage of using something like this:</p>
  
  <pre><code>dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff
  </code></pre>
  
  <p>or even</p>
  
  <pre><code>dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff
  </code></pre>
  
  <p>I mean, in both cases you are firing a block to be executed on the main thread, exactly where the app runs and this will not help to reduce the load. In the first case you don't have any control when the block will run. I have seen cases of blocks being executed half a second after you fire them. The second case, it is similar to</p>
  
  <pre><code>[self doStuff];
  </code></pre>
  
  <p>right?</p>
  
  <p>I wonder what do you guys think.</p>