Вы можете использовать boost::posix_time::time_duration
, чтобы получить диапазон времени.Например, вот так:
boost::posix_time::time_duration diff = tick - now;
diff.total_milliseconds();
И чтобы получить более высокое разрешение, вы можете изменить часы, которые используете.Например, до boost::posix_time::microsec_clock
, хотя это может зависеть от ОС.Например, в Windows boost::posix_time::microsecond_clock
имеет разрешение в миллисекундах, а не микросекундах.
Пример, который немного зависит от аппаратного обеспечения.
int main(int argc, char* argv[])
{
boost::posix_time::ptime t1 = boost::posix_time::second_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime t2 = boost::posix_time::second_clock::local_time();
boost::posix_time::time_duration diff = t2 - t1;
std::cout << diff.total_milliseconds() << std::endl;
boost::posix_time::ptime mst1 = boost::posix_time::microsec_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime mst2 = boost::posix_time::microsec_clock::local_time();
boost::posix_time::time_duration msdiff = mst2 - mst1;
std::cout << msdiff.total_milliseconds() << std::endl;
return 0;
}
На моей машине win7.Первый выход - либо 0, либо 1000. Второе разрешение.Второй почти всегда 500, из-за более высокого разрешения часов.Я надеюсь, что это поможет немного.