Tips and Tricks
Consider using std::vector<> for buffers over raw arrays and boost::array
A buffer variable for use with read and write operations could be defined:
boost::array<char, max_size> buffer;
Consider using this last form based on std::vector<>, as it allows your application to use buffer debugging
Asio has a rather good deadline timer, but try using it as a repeating timer and you will come into difficulties when attempting to cancel it.
This is an interesting example of an implementaion of a repeating timer
which is basd on the basic_deadline_timer and uses its implementaion and service to acheive a safe repeating time which is cancellable. This timer provides a guarante that the async callback will not be invoked when the cancel returns.
"Stopping the io_service from running out-of-work" continued.
In addition to the great Boost.Asio docs
consider combining boost::asio::io_service::work with boost::optional:
for (std::size_t i = 0; i != work_thread_count; ++i)
// add some work for work_io_service
work_io_service_guard = boost::none;
It's more lightweight than using std::auto_ptr - it uses stack instead of heap to allocate io_service::work instance.
Topic revision: r6 - 17 Aug 2012 - 11:00:57 - MaratAbrarov?