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.