I have an application written in C ++, which encourages: uses ASIO requests on this socket Hears and does not have some CPU-bound work (for example, a disk or network I / O) for each request, and then responds with feedback. This application is a multi-core system, so I plan to process (at least) 1 thread per core in order to process requests in parallel. What's the best way to do this? Things to think about: I'll need a fixed size thread pool (i.e. 1 thread per CPU) If I have more requests than Threads Then they the server is currently single threaded: This client waits for the request Receiving the request once After this, it works, and writes back the response, then begins waiting for the next request Update: More specifically: I should use the mechanism to make sure that incoming requests are queued if the server is busy is? Which mechanism should I use to distribute the incoming requests between N Thread (1 per core)? I don t if you are actua...