Network server design question

Brad Roberts braddr at puremagic.com
Mon Aug 5 16:49:09 PDT 2013


On 8/5/13 4:33 PM, Sean Kelly wrote:
> On Aug 4, 2013, at 12:38 PM, Marek Janukowicz <marek at janukowicz.net> wrote:
>
>> I'm writing a network server with some specific requirements: - 5-50 clients connected (almost)
>> permanently (maybe a bit more, but definitely not hundreds of them) - possibly thousands of
>> requests per seconds - responses need to be returned within 5 seconds or the client will
>> disconnect and complain
>
> Given the relatively small number of concurrent connections, you may be best off just spawning a
> thread per connection.  The cost of context switching at that level of concurrency is reasonably
> low, and the code will be a heck of a lot simpler than an event loop dispatching jobs to a thread
> pool (which is the direction you might head with a larger number of connections).

I agree, with one important caveat:  converting from a blocking thread per connection model to a 
non-blocking pool of threads model is often essentially starting over.  Even at the 50 threads point 
I tend to think you've passed the point of just throwing threads at the problem.  But I'm also much 
more used to dealing with 10's of thousands of sockets, so my view is a tad biased.


More information about the Digitalmars-d mailing list