我编写了一个示例函数来理解 std::chrono::duration
的行为,它最近作为 C++11 标准的一部分引入。
void exampleForDuration()
{
seconds Sec(minutes(1));
cout<<"1 second is "<<duration_cast<nanoseconds>(seconds(1)).count()<<" nanoseconds"<<endl;
cout<<"1 minute is "<<Sec.count()<<" seconds"<<endl;
cout<<"1 second is "<<duration_cast<duration<int,centi>>(seconds(1)).count()<<" centiseconds"<<endl;
cout<<"100 second is "<<duration_cast<minutes>(seconds(100)).count()<<" minute."<<endl;
cout<<"Waiting for 10 seconds...";
auto start=system_clock::now();
this_thread::sleep_for(seconds(10));
cout<<"Done."<<endl;
auto end=system_clock::now();
auto waitedFor=end-start;
cout<<"Waited for "<<duration_cast<seconds>(waitedFor).count()<<" seconds"<<endl;
printCurrentDateTime();
}
输出:
1 second is 1000000000 nanoseconds 1 minute is 60 seconds 1 second is 100 centiseconds 100 second is 1 minute. -------> 1) Waiting for 10 seconds...Done. -------> 2) Waited for 10 seconds
当我运行上面的函数时,程序令人惊讶地在打印 1) 之后等待了 10 秒,而不是在打印 2) 之后。我期待程序在打印“等待 10 秒...”后等待,然后等待,然后打印“完成”。但它打印出“100 秒是 1 分钟”。然后等待 10 秒,然后输出其余部分。
最佳答案
如果你改变它是否正常工作
cout<<"Waiting for 10 seconds...";
到
cout<<"Waiting for 10 seconds..." << endl;
可能是它没有刷新,所以它还没有打印那行。
关于c++ - C++ 11 std::chrono::duration 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12129296/