std::this_thread::sleep_for 的设计缺陷在于,依赖系统时间,系统时间修改后,就不准确了
#include <stdio.h>
#include <thread>
#include <chrono>void SleepMs(int32_t nMs)
{
#ifdef WIN32Sleep(nMs);
#else(void)usleep(nMs * 1000);
#endif
}int main()
{for (int i = 0; i < 10000; i++){std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();int64_t duration = std::chrono::duration_cast<std::chrono::milliseconds>(t1.time_since_epoch()).count(); // 获取打点时间,和系统无关,系统时间调整不会引起跳变printf("duration %d :%lld \n", i, duration);#if 0std::this_thread::sleep_for(std::chrono::milliseconds(1000)); // 在windows 下,如果系统时间往前调,会卡住,和系统时间有关系,测试可用,项目最好不用
#elseSleepMs(1000);#endif}}