#include "boost/asio.hpp"
#include "boost/date_time/posix_time/posix_time.hpp"
boost::asio::io_service ios_;
auto& cur_utc_time = boost::posix_time::microsec_clock::universal_time();
int scan_rate_ = 20000;
auto& sync_start_time = cur_utc_time + boost::posix_time::millisec(scan_rate_ - (cur_utc_time.time_of_day().total_microseconds() % scan_rate_));
boost::asio::deadline_timer timer(ios_, sync_start_time);
while (true)
{
timer.expires_at(timer.expires_at() + boost::posix_time::millisec(scan_rate_));
timer.wait();
}