C++ std::chrono::时间点设置为现在
我对这些库还是很陌生,在std::chrono上可以找到的文档对我来说并不适用 我正在尝试实现一个包含时间戳的对象容器。所有对象都将按从最近到最不最近的顺序存储,我决定尝试使用std::chrono::time_点来表示每个时间戳。处理数据的线程将定期唤醒,处理数据,查看何时需要再次唤醒,然后在此期间休眠C++ std::chrono::时间点设置为现在,c++,time,c++11,chrono,C++,Time,C++11,Chrono,我对这些库还是很陌生,在std::chrono上可以找到的文档对我来说并不适用 我正在尝试实现一个包含时间戳的对象容器。所有对象都将按从最近到最不最近的顺序存储,我决定尝试使用std::chrono::time_点来表示每个时间戳。处理数据的线程将定期唤醒,处理数据,查看何时需要再次唤醒,然后在此期间休眠 static std::chrono::time_point<std::chrono::steady_clock, std::chrono::milliseconds> _next
static std::chrono::time_point<std::chrono::steady_clock, std::chrono::milliseconds> _nextWakeupTime;
我只是觉得这不能很好地代表我应该做什么
同样,实例化给定时钟/持续时间的时间点对象并将其设置为现在的最佳方法是什么?最简单的方法是为下一个运行时间键入
稳定的时钟::时间点
steady_clock::time_point _nextWakeupTime;
您可以使用稳定时钟::时间点::周期
查询此时间点
的分辨率,其中提供了一个带有静态成员num
和den
的std::ratio
typedef steady_clock::time_point::period resolution;
cout << "The resolution of steady_clock::time_point is " << resolution::num
<< '/' <<resolution::den << " of a second.\n";
也就是说,在您的实现中,稳定时钟::时间点::时钟
不是稳定时钟
,而是系统时钟
。如果您确实想要一个与稳定时钟::时间点
兼容的时间点
,但分辨率为毫秒,您可以这样做:
_nextWakeupTime += _nextWakeupTime.time_since_epoch();
time_point<steady_clock::time_point::clock, milliseconds> _nextWakeupTime;
time\u point\u nextWakeupTime;
std::chrono::time\u point
=>你的印象是错误的。时钟的精度是由时钟决定的,你不能改变它。在这里,您只是要求以毫秒表示时间。@用户-您分配的问题是不同的时钟可以使用不同的历元,因此他们可能不同意现在的含义。这类似于“午夜五分钟”在另一个时区不一样。
typedef steady_clock::time_point::period resolution;
cout << "The resolution of steady_clock::time_point is " << resolution::num
<< '/' <<resolution::den << " of a second.\n";
time_point::clock
time_point<steady_clock::time_point::clock, milliseconds> _nextWakeupTime;