在C++中有时会用到定时器,或者在线程中使用sleep来充当定时器,但是往往定时器的精度到不到自己的需求,下面介绍一种高精度的计时的方法。
static auto startNanoSecond = std::chrono::high_resolution_clock::now();//初始赋值,局部静态变量值赋值一次
auto endNanoSecond = std::chrono::high_resolution_clock::now();
long long deltaMS = std::chrono::duration_cast<std::chrono::milliseconds>(endNanoSecond - startNanoSecond).count();
if (deltaMS >= 50) { // 仿真步长到达 50毫秒
/*
doSth();//执行其他事情
*/
startNanoSecond = std::chrono::high_resolution_clock::now();//更新开始时间
}
包含头文件:
#include <chrono>