C++ std::chrono::时间点设置为现在

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

我对这些库还是很陌生,在std::chrono上可以找到的文档对我来说并不适用

我正在尝试实现一个包含时间戳的对象容器。所有对象都将按从最近到最不最近的顺序存储,我决定尝试使用std::chrono::time_点来表示每个时间戳。处理数据的线程将定期唤醒,处理数据,查看何时需要再次唤醒,然后在此期间休眠

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;