本篇内容介绍了“C++ sleep()和usleep()的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
sleep() 和 usleep()主要区别前者单位为秒,后者为微妙(*1e6)
代码如下:设置一个时间参数,分别向sleep()和usleep()方法传入该参数,打印sleep和usleep前后的系统时间戳
#include <time.h> #include <stdio.h> #include <iostream> #include <unistd.h> using namespace std; int main(int argc, char *argv[]){ int sleep_time = 100; cout << "sleep before time: " << time(NULL) << endl; sleep(sleep_time); cout << "sleep after time: " << time(NULL) << endl; cout << "======================" << endl; cout << "usleep before time: " << time(NULL) << endl; usleep(sleep_time); cout << "usleep after time: " << time(NULL) << endl; }
运行结果:
sleep before time: 1560257692
sleep after time: 1560257792
======================
usleep before time: 1560257792
usleep after time: 1560257792
从运行结果来看,sleep()方法执行前后的时间戳相减正好是sleep_time大小,打印的时间戳是以秒为单位的,所以sleep()方法将程序挂起使用的单位是秒级别的;从usleep()执行前后的时间戳来看,感觉上程序并没有被挂起,这是因为usleep()方法将程序挂起的使用的单位是微秒级别的(1,000,000 微秒 = 1秒)所以程序看起来并没有被挂起,下面我们将打印的时间戳改为微秒级别的看看。
可以通过<sys/time.h>库中的gettimeofday()方法来拿到当前系统的微秒级别时间。
#include <stdio.h> #include <iostream> #include <unistd.h> #include <sys/time.h> using namespace std; int main(int argc, char *argv[]){ int sleep_time = 100; cout << "sleep before time: " << time(NULL) << endl; sleep(sleep_time); cout << "sleep after time: " << time(NULL) << endl; cout << "======================" << endl; cout << "usleep before time: " << time(NULL) << endl; usleep(sleep_time); cout << "usleep after time: " << time(NULL) << endl; cout << "======================" << endl; struct timeval tv; gettimeofday(&tv,NULL); cout << "not usleep before time: " << tv.tv_sec<<"s,"<<tv.tv_usec<<"微秒"<<endl; usleep(0); gettimeofday(&tv,NULL); cout << "not usleep after time: " << tv.tv_sec<<"s,"<<tv.tv_usec<<"微秒"<<endl; cout << "======================" << endl; gettimeofday(&tv,NULL); cout << "usleep before time: " << tv.tv_sec<<"s,"<<tv.tv_usec<<"微秒"<<endl; usleep(sleep_time); gettimeofday(&tv,NULL); cout << "usleep after time: " << tv.tv_sec<<"s,"<<tv.tv_usec<<"微秒"<<endl; }
运行结果
sleep before time: 1560260201
sleep after time: 1560260301
======================
usleep before time: 1560260301
usleep after time: 1560260301
======================
not usleep before time: 1560260301s,491772微秒
not usleep after time: 1560260301s,491948微秒
======================
usleep before time: 1560260301s,491962微秒
usleep after time: 1560260301s,492191微秒
从使用usleep(0)和使用了usleep(100)方法来看,执行前后的时间差差不多相差100,从而可以看出usleep()是以微秒级别为单位的。
“C++ sleep()和usleep()的区别是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。