FWIW, the reason why I originally chose to create that many threads is that threads could (and quite frequently will) time out due to network related issues. Creating a timer thread to kill timed out threads seemed very easy and handy. Creating a fork within a thread with a signal handler killing the fork on the other hand would be
more expensive.