Assynchronous programming is now becoming a must and apparently all languages are creating resources to make such programming paradigm easier or, at least, less hard.
In C++, the standard and multiplatform approach is to use Boost.Asio, which is detailed in the book.
What can I say? Most of the book deals with an advanced topic, so I consider this book good to those with a good background in C++ but without a background in Asio and asynchronous programming.
The pros I see on the book:
- It has many code samples, some of which we can say are fully working applications;
- It present both synchronous and assynchronous examples of Asio (I consider it strange that Asio has synchronous functions but, as it has, the book does a good thing by presenting them);
- It shows and explains how assynchronous code can be served by a single thread or by many threads;
- It presents how the Asio is not limited to networking (even if that it's main use).
The cons I see on the book
Nothing is perfect... or, at least, it is hard to find something that two persons will agree as being "perfect". To me, the weak points are:
- The book apparently tries to show how easy Asio is, which seems something beginners could use. Asio can be easier than other asynchronous libraries, but it is still not something we expect beginners to use;
- I think the timeout examples are a bit misleading, as timeouts are not expected to be very short and because in the examples they are not destroyed when the action finishes on time, they will simple run later and do nothing;
- I would prefer less advanced topics and more on co-routines, as I know that co-routines can make assynchronous programming really easier, but the topic was too short on the book.
As I said, it is hard to agree in what is good or not.
I consider this a good book even if I disagree on some points. I can say that it is a 8 out of 10 for me.