title: std::async always executes on the same thread my other cores are doing nothing
body: <p>I want to parallelism a number of task using <code>std::async</code>. Those task, lambdas, will modify an object. I know that it's up to the <code>std::async</code> implementation do decide how the task is handled. I also understand that with specifying <code>std::launch::async</code> I could "force" parallel execution. </p>
  
  <p>What makes me wondering is, that despise all my other cores doing nothing, the implementation still decided to not run the task in parallel. I would absolutely be happy with serial execution but only if my other cores would be busy.</p>
  
  <p>For me it's somehow takes away the sense compared to <code>std::thread</code> - especially if you still care about oversubscription. Is there a point is this behaviour I'm missing?</p>
  
  <p>I'm doing the work in such a fashion, if that's relevant:</p>
  
  <pre><code>std::vector&lt;std::future&lt;void&gt;&gt; futs;
  for(size_t i=0; i&lt;someNumber; ++i)
      futs.emplace_back( std::async(std::launch::async, someLambda, i) );
  
  for(auto&amp; fut : futs)
      fut.get(); // they return nothing, but I need to make sure they have executed.
  </code></pre>
  
  <p><strong>Edit</strong>:
  The execution time with <code>std::launch::asyc</code> is about 1/4th compared to the default policy. I've 4 cores.
  Here what library and gcc version I'm using:</p>
  
  <pre><code>$ /sbin/ldconfig -p | grep stdc++
          libstdc++.so.6 (libc6,x86-64) =&gt; /usr/lib/x86_64-linux-gnu/libstdc++.so.6
          libstdc++.so.6 (libc6) =&gt; /usr/lib/i386-linux-gnu/libstdc++.so.6
  $ g++ --version
  g++ (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
  </code></pre>