You have an infinite loop because you are instantiating a Server in the Server() constructor
in A-
Server()
{
boost::network::utils::thread_pool thread_pool(2);
***--> Server handler(); <--***
serv = new http_server(0.0.0, 800, handler, thread_pool);
boost::thread servlet1(boost::bind(&http_server::run, serv));
boost::thread servlet2(boost::bind(&http_server::run, serv));
serv->run();
std::cout << "This never prints" << std::endl;
}