我编写了一个示例函数来理解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秒是1000000000纳秒,1分钟是60秒,1秒是100厘米秒,100秒是1分钟。
当我运行上面的函数时,程序在打印后等待了10秒,而不是在打印之后。我以为程序会在打印“等待10秒.”之后等待。然后等待,然后打印“完成”。但是上面写着"100秒是1分钟“然后等待10秒,然后剩下的输出。
发布于 2012-08-26 10:31:18
如果您更改,它是否正常工作?
cout<<"Waiting for 10 seconds...";至
cout<<"Waiting for 10 seconds..." << endl;这可能是因为它不冲,所以它还没有打印这条线。
https://stackoverflow.com/questions/12129296
复制相似问题