title: Do we need  multiple io_service per thread for threaded boost::asio server with a single acceptor
body: <p>I am not much experienced in <code>boost::asio</code>. I've some pretty basic questions.</p>
  
  <p>Do I need to have a different <code>io_service</code>, and a different <code>socket</code> under a different <code>thread</code> but one single <code>acceptor</code>, to process a client in a threaded server ? </p>
  
  <p>I believe I must have a different socket for a new client. But if all threads use the same <code>io_service</code> would it be parallel ?</p>
  
  <p>I was going through <a href="http://en.highscore.de/cpp/boost/index.html" rel="noreferrer">http://en.highscore.de/cpp/boost/index.html</a> in asio section
  which says I need to have different io_services in different threads to achieve parallelization. </p>
  
  <p>I if I plan to make a Server class that creates a <code>new TCPsession</code> each time a new client appears in <code>acceptor.async_accept</code><br />
  and <code>TCPSession</code> ctor creates an <code>io_service</code> and a <code>thread</code> and runs that <code>io_service.run()</code> in its own thread would it be a good design ?</p>
  
  <p>However in this design where would I join all these threads ? do I need another <code>io_service</code> for <code>main</code> so that it doesn't terminate even before getting a new Client ?</p>