From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2005-12-22 09:57:18
This is a question to networking gurus, and is on the edge of being off
topic, but I am asking it here because I hope it will help me to better
understand rationale behind the asio design...
As was stated before, asio is based on the proactor pattern. This pattern
is known for its scalability, but is difficult to port since it's based on
asynchronous calls which are implemented differently (or not implemented at
all) on diferent OSs.
OTOH, reactor (the one based on select) seems to be easily portable, and
also scalable, but its only real problem is that it doesn't utilise threads,
and so it can't take an advantage of multi-processor systems.
So my question is, isn't this drawback easily remedied by just placing
select-ed sockets into a queue, and having multiple threads (from a thread
pool) pick them up and performing the work? Wouldn't this provide
comparable performance on multiple processors, with much better portability,
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk