If you're intending to have many clients connecting to your server at the same time I recommend you avoid "thread per client" as it will end up slowing your computer down. Instead you could consider a non-blocking solution which would forego the need for additional threads at all.

a single-threaded non-blocking model may be better for performance on the server machine, but the perceived performance by the clients could be much much worse. if two clients try to make a request at the same time, one will have to wait for the other while it finishes this could be unpleasant for the clients on long-running requests. one possible solution for this is to spawn a thread for each request, but monitor the raw sockets with a polling loop.