C ++: Boost.Asio: inicie a sessão do servidor SSL em um novo thread

Eu escrevi um par de programas de servidor / cliente com base emeste exemplo para o servidor e eu já terminei de todos os protocolos de comunicação. O servidor deve receber várias conexões de várias conexões de vários clientes; portanto, desejo separar as sessões umas das outras e espero poder fazer isso comstd::thread.

Parece fácil, mas não sei como fazê-lo. Todos os exemplos online parecem mostrar como executar uma função em paralelo, mas não parecem mostrar como criar um objeto em um novo thread.

Fiz alguns comentários para explicar meu entendimento sobre este mecanismo de sessão.

O código que eu quero usar é o seguinte:

class server
{
public:
  server(boost::asio::io_service& io_service, unsigned short port)
    : io_service_(io_service),
      acceptor_(io_service,
          boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port)),
      context_(io_service, boost::asio::ssl::context::sslv23)
  {
    //some code...


    //notice the next lines here create the session object, and then recurs that to receive more connections
    session* new_session = new session(io_service_, context_);

    //this is called to accept more connections if available, the callback function is called with start() to start the session
    acceptor_.async_accept(new_session->socket(),
        boost::bind(&server::handle_accept, this, new_session,
          boost::asio::placeholders::error));
  }

  void handle_accept(session* new_session, const boost::system::error_code& error)
  {
    if (!error)
    {
 ,     //so the session starts here, and another object is created waiting for another session
      new_session->start();
      new_session = new session(io_service_, context_);
      //now this function is, again, a call back function to make use of new_session, the new object that's waiting for a connection
      acceptor_.async_accept(new_session->socket(),
          boost::bind(&server::handle_accept, this, new_session,
            boost::asio::placeholders::error));
    }
    else
    {
      delete new_session;
    }
  }

private:
  boost::asio::io_service& io_service_;
  boost::asio::ip::tcp::acceptor acceptor_;
  boost::asio::ssl::context context_;
};

Como posso criar essas sessões em novosstd::thread?

Se você precisar de informações adicionais, pergunte. Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion