滁州项目建设公示在哪个网站,电商型网站开发多少钱,商标设计免费版,中国男女做网站休眠函数简介1: 让线程休眠一段时间1.1#xff1a;std::chrono 的时钟 clock简介
C11 之前并未提供专门的休眠函数#xff0c;C语言的 sleep、usleep函数其实是系统提供的函数#xff0c;不同的系统函数的功能还要些差异。
在Windows系统中#xff0c;sleep的参数是毫秒 …
休眠函数简介1: 让线程休眠一段时间1.1std::chrono 的时钟 clock简介
C11 之前并未提供专门的休眠函数C语言的 sleep、usleep函数其实是系统提供的函数不同的系统函数的功能还要些差异。
在Windows系统中sleep的参数是毫秒 sleep(2*1000); // sleep for 2 seconds 在类Unix系统中sleep()函数的单位是秒。 sleep(2); // sleep for 2 seconds 但是从C11起C标准库提供了专门的线程休眠函数使得你的代码可以独立于不同的平台。 std::this_thread::sleep_for std::this_thread::sleep_untill 1: 让线程休眠一段时间
std::this_thread::sleep_for : 用于Block 当前线程一段时间。 函数原型 templateclass Rep, class Period void sleep_for(const std::chrono::durationRep,Period sleep_duration); 比如想要一个线程休眠 100ms std::this_thread::sleep_for(std::chrono::millseconds(100)); #include iostream
#include chrono
#includethreadint main(){std::cout start wait...... std::endl;/**在C11 中 chrono中有三种时钟system_clock, steady_clock 和 high_resolution_clocksystem_clock : 是不稳定的因为时钟是可调的。它可以输出当前时间距离1970年1月1日00:00的毫秒数它一般用于需要得到 绝对时点的场景。steady_clock一般用在需要得到时间间隔的场景。high_resolution_clock介于上面两者之间时间精度比steady_clock()更精确*/auto start std::chrono::high_resolution_clock::now();std::this_thread::sleep_for(std::chrono::milliseconds(2000));auto end std::chrono::high_resolution_clock::now();std::chrono::durationdouble,std::milli elapsed end-start;std::cout waited: elapsed.count() ms std::endl;}
打印结果
tart wait......
waited: 2000.06 ms1.1std::chrono 的时钟 clock
std::chrono是C11引入的日期时间处理库其中包含了3种时钟 system_clocksteady_clock high_resolution_clock 。如果需要使用高精度的时间很自然就会想到使用 high_resolution_clock 。
1. system_clock 用在需要得到绝对时间点的场景。
void test_system_clock(){auto curTime std::chrono::system_clock::now();std::time_t tt std::chrono::system_clock::to_time_t(curTime);std::cout tt seconds from 1970-01-01 00:00:00 UTC std::endl;
}
int main(){test_system_clock();
}// 打印结果1677597162 seconds from 1970-01-01 00:00:00 UTCsteady_clock 用在需要得到时间间隔并且这个时间间隔不会因为修改系统时间而受到影响的场景
void test_steady_clock(){auto curTime std::chrono::steady_clock::now();// do somethingstd::this_thread::sleep_for(std::chrono::milliseconds(3000));auto curTime2 std::chrono::steady_clock::now();std::chrono::durationdouble,std::milli spendTime (curTime2-curTime);std::cout 耗时 spendTime.count() 秒 std::endl;
}int main(){test_steady_clock();
}// 打印耗时3000.07秒