title: Why is there no thread pool in C++ standard library?
body: <p>Since C++11 there has been a surge in the amount of parallel/concurrent programming tools in C++: threads, async functions, parallel algorithms, coroutines… But what about a popular parallel programming pattern: <a href="https://en.wikipedia.org/wiki/Thread_pool" rel="nofollow noreferrer">thread pool</a>?</p>
  <p>As far as I can see, nothing in the standard library implements this directly. Threading via <code>std::thread</code> can be used to implement a thread pool, but this requires manual labor. Asynchronous function via <code>std::async</code> can be launched either in a new thread (<code>std::launch::async</code>) or in the calling thread (<code>std::launch::deferred</code>).</p>
  <p>I think <code>std::async</code> could've been easily made to support thread pooling: via another launch policy (<code>std::launch::thread_pool</code>) which executes the task in an implicitly created global thread pool; or there could be a <code>std::thread_pool</code> object plus an overload of <code>std::async</code> which takes a thread pool.</p>
  <p>Was something like this considered, and if so, why was it rejected? Or is there a standard solution that I am missing?</p>