I have just read N3388 - Using Asio with C++11 and a think I start to understand the ASIO design. Could we say the completion handlers are continuations? And that the user use to master which thread executes the continuation by calling the io_service::run() function?
Pretty much, except that multiple threads can call io_service::run concurrently. Basically Boost.Asio is a work sharing queue plus a collection of waitqueues to wait for specific events.
Far clearer than my explanation. Thanks.
That's orthogonal. Boost.Asio provides the funding blocks. A nicer interface that doesn't require an explicit continuation passing style transformation can be built with Boost.Context or a similar library. But it probably needs a future implementation that integrates with ASIO, which is one of the point of Niall Douglas.
Spot on. Especially as parts of ASIO are due to enter with TR2. I worry that a thread pool designed without ASIO in mind would become an orphan isolate. Niall --- Opinions expressed here are my own and do not necessarily represent those of BlackBerry Inc.