
To get into the threading stuff, I did add some output to the std::cout in the request_handler part at the top of the method “handle_request“ following by a sleep(5000).
After this I compile (without errors/warnings) and run the program providing Ip/Port, docroot and threadpool size 20. When I start a request to it with my browser, as expected I get the output on the console. But when I start some requests concurrent, the requests seems processed one by one (not concurrent as expected). I don’t know, but I expect, that the Requests would be processed concurrent (1 Request = 1 Thread?)
As far as I see, request_handler is called from handle_read, and the latter handler is wrapped with strand -- especially to prevent such a concurrecy: http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/reference/io_ service__strand.html
Ahh I see - I currently do not understand the sense of this. It's a HTTP Server, why should it not process requests concurrently? Any ideas?