title: Why should I use std::async?
body: <p>I'm trying to explore all the options of the new C++11 standard in depth, while using std::async and reading its definition, I noticed 2 things, at least under linux with gcc 4.8.1 :</p>
  
  <ul>
  <li>it's called <em>async</em>, but it got a really "sequential behaviour", basically in the row where you call the <em>future</em> associated with your async function <em>foo</em>, the program blocks until the execution of <em>foo</em> it's completed. </li>
  <li>it depends on the exact same external library as others, and better, non-blocking solutions, which means <code>pthread</code>, if you want to use <code>std::async</code> you need pthread.</li>
  </ul>
  
  <p>at this point it's natural for me asking why choosing std::async over even a simple set of functors ? It's a solution that doesn't even scale at all, the more future you call, the less responsive your program will be.</p>
  
  <p>Am I missing something ? Can you show an example that is granted to be executed in an async, non blocking, way ?</p>