It is a common task to check something with specified intervals. For example, we need to check some sessions for an activity once in every 5 seconds. There are popular solutions for such a problem:
- The bad solution creates a thread that does the checking and then sleeps for 5 seconds. This is a lame solution that eats a lot of system resources and scales badly.
- The right solution uses system specific APIs for manipulating timers asynchronously. This is a better solution, that requires some work and is not portable, unless you use
Boost.Asio
.
You must know how to use C++11 rvalue-references and unique_ptr
.
This recipe is based on the code from the previous recipe. See the first recipe of this chapter to get information about the boost::asio::io_service
and task_queue
classes.
Link this recipe with the boost_system
and boost_thread
libraries. Define BOOST_ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS
to bypass restrictive library checks.