我编写了一个示例函数来了解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 秒。我希望程序在打印“Waiting for 10 seconds...”后等待,然后等待,然后打印“Done”。但它打印“100 秒是 1 分钟”。然后等待 10 秒,然后是其余的输出。