
Although I do somewhat agree with Cliff, I find the phooey argumentation even better. I've read some papers that basically stated that using a thread based model with blocking IO is equivalent with using asynchronous IO. Performance of either implementation is something that definitely depends on the underlying OS and the author's skills, however common knowledge teaches us that the asynchronous IO approach is more performant, most likely due to deficiencies of the OS's thread implementation. I've written several applications using either approach, for the async style using Mina (Java) and ACE, and although I've been quite pleased with the turnout, I do find that a threading/blocking based approach is much easier to understand; but then again maybe I'm just a little bit thick. Oh and !phooey to the completion_condition design, it's excellent! On 5/23/07, Caleb Epstein <caleb.epstein@gmail.com> wrote:
On 5/22/07, Cliff Green <cliffg@codewrangler.net> wrote:
Even if Asio didn't provide nice default handling of "message boundaries", it's pretty easy to write the logic yourself in a non-blocking design, whether using an async (proactive) or reactive model.
I'd say that its not asio's job to provide any messaging semantics, and I applaud Chris for keeping the library focused on its core goals. Higher level functionality can come later, but you have all the tools you need to do this in asio already.
I personally find that having to implement a "connection" class for a given communications protocol encourages good design. You end up breaking the protocol down into small functions that are easy to read and debug. Your class ends up being a nice little FSM, which is the Right Way to do this sort of thing anyway.
Phooey to blocking reads.
-- Caleb Epstein _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Radu-Adrian Popescu Front Office Software Engineer Optiver Holding B.V. De Ruyterkade 112 1011 AB Amsterdam Office +31-(0)20-531-9000 Mobile +40 723 33 55 73