Subject: Re: [boost] C++ Networking Library Release 0.5
From: James Mansion (james_at_[hidden])
Date: 2010-02-02 15:09:10
Peter Petrov wrote:
> Agreed threads are alternative, but only for small servers without high
> scalability requirements (e.g. tens of thousands simultaneous HTTP
> keep-alive connections). The thread-per-connection model is outdated and in
> 2010 it's not a good idea to start a framework which relies on it.
Well, I'd actually argue the contrary now that we have 64 bit systems
and the old issues
of running out of VM addresses for stacks is gone. Having said that I
too prefer async
IO - but I'm really not sure many applications need more than 10k
while I'd have baulked at that number of threads, I suspect that all the
platforms can handle that many these days.
> Coroutines could work, though I doubt the complexity (e.g. using yielding
> iterators with Spirit) or performance will be any better than simply using a
> FSM-based parser.
Well, I'd prefer an FSM based parser, but Spirit sucks for that, since
its a pull parser
and you are only able to get away with it by making assumptions about
'whole message' before starting the parse. Which implies either an
some alignment of read with content delimiters, or that you pre-scan the
content to find
the delimiter - and process every byte twice. A well executed push
parser need not
do that, and ragel or re2c feeding lemon is the best approach I know of.
I haven't tried
the ragel author's parser.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk