Exemple de C++ 11 std::chrono::durée
J'ai écrit un exemple de fonction pour comprendre le comportement de std::chrono::duration
qui a récemment présenté dans le cadre de 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();
}
De sortie:
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
Quand j'ai couru la fonction ci-dessus, le programme étonnamment attendu 10 secondes après l'impression 1) plutôt que d'après l'impression 2). Je m'attendais au programme à attendre après l'impression "en Attente de 10 secondes..." puis d'attendre et ensuite de l'impression "de Faire". mais c'imprimé "100 deuxième est de 1 minute." ensuite attendu pendant 10 secondes, puis le reste de la production.
Vous devez vous connecter pour publier un commentaire.
Ça fonctionne correctement si vous modifiez
à
Il est peut-être que ce n'est pas de rinçage, de sorte qu'il n'a pas l'impression que la ligne encore.