【发布时间】:2015-02-24 13:46:35
【问题描述】:
我正在运行一个简单的程序,我在其中使用time_point 和system_clock::now,然后是this_thread::sleep_for(seconds(1)),然后又是time_point 和system_clock::now。
现在,如果我在第一个 time_point 上添加一些额外的 duration,它会在 1 秒和 2 秒内给出完全相同的结果!
这里是demo code:
#include<iostream>
#include<chrono>
#include<thread>
using namespace std;
void CheckDuration (std::chrono::duration<int> seconds)
{
auto start = std::chrono::system_clock::now() + seconds;
std::this_thread::sleep_for(std::chrono::seconds(1));
auto stop = std::chrono::system_clock::now();
cout << "Difference = " << std::chrono::duration_cast<std::chrono::seconds>(stop-start).count() << endl;
}
int main ()
{
CheckDuration(std::chrono::duration<int>(0)); // Difference = 1
CheckDuration(std::chrono::duration<int>(1)); // Difference = 0
CheckDuration(std::chrono::duration<int>(2)); // Difference = 0 <=== ???
CheckDuration(std::chrono::duration<int>(3)); // Difference = -1
}
【问题讨论】:
标签: c++ c++11 output duration chrono