Vous pouvez utiliser boost::posix_time::time_duration
pour obtenir l'intervalle de temps. E. g comme ceci
boost::posix_time::time_duration diff = tick - now;
diff.total_milliseconds();
Et pour obtenir une résolution plus élevée, vous pouvez modifier l'horloge que vous utilisez. Par exemple, à l' boost::posix_time::microsec_clock
, mais cela peut être OS dépendante. Sur Windows, par exemple, boost::posix_time::microsecond_clock
a milisecond résolution, pas de la microseconde.
Un exemple qui est un peu dépendant du matériel.
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;
}
Sur mon win7 machine. Le premier est soit 0 ou 1 000. Deuxième résolution.
Le second est presque toujours 500, en raison de la résolution élevée de l'horloge. J'espère que vous aider un peu.