The issue with / select threads is whether you want to avoid blocking each other. If this is not a problem, then work single-threaded. If so, select the appropriate threading scheme (1 thread per connection, worker threads per connection, worker thread per request, ...).
When working with 1 thread per connection, the read / write choice is a worthy decision, but as a rule, it is better to work with non-blocking sockets in combination with a choice to avoid blocking in situations when only a part of the expected message is expected, and then make a choice after recording .
source share