Linux sleep和 usleep睡眠函数的使用
sleep()是以秒为单位的
sleep(100);即程序在此停留100s
usleep()是以微秒级别为单位的
usleep(100);即程序在此停留100us
#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()是以微秒级别为单位的。
Linux sleep和 usleep睡眠函数的使用相关推荐
- linux内核中的睡眠函数*delay、*sleep
目录 一.睡眠函数种类 1.原子上下文 2.非原子上下文 二.使用环境 1.使用环境的不同,选择不同的延时 2.驱动机制不同 3.内核中的计算函数执行的函数 三.实测两类函数的延时以及原因 1.测试系 ...
- Linux Shell中的延时函数
Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下 sleep 和 usleep 的区 ...
- Android/linux(earlysuspend、lateresume)睡眠唤醒机制简
来源处 http://blog.sina.com.cn/s/blog_759dc36b0100stax.html 背景介绍: 睡眠/唤醒是嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以 ...
- Linux 基础知识(2)---Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
Linux内核空间内存申请函数kmalloc.kzalloc.vmalloc的区别 kzalloc与kmalloc区别 这个函数就是原来的两个函数的整合 , 即原来我们每次申请内存的时候都会这么 ...
- linux进程睡眠编程,linux内核编程-可睡眠锁之SRCU
linux内核编程-可睡眠锁之SRCU DEFINE_SRCU DEFINE_SRCU_STATIC static修饰的定义只能在该c文件中使用,用于保护命名空间. 如果一个函数里面使用了static ...
- Linux下的内存对齐函数
在Linux下内存对齐的函数包括posix_memalign, aligned_alloc, memalign, valloc, pvalloc,其各个函数的声明如下: int posix_memal ...
- linux kbhit扫描键盘,(转)检测按键(Linux中kbhit()函数的实现)
http://hi.baidu.com/jtntiivtemcnsue/item/90689ce172ee912c5a7cfb1b 编写过MS-DOS程序的人通常都会查找Linux下等同于kbhit的 ...
- linux启动程序api编程,Linux编程中关于API函数与系统调用间关系
用户态xyz()函数,内核最终一般会调用形如sys_xyz()的服务例程来处理(不过也有一些例外,这里暂时不考虑) 函数xyz()是直接提供给用户编程使用的.图中"SYSCALL" ...
- Linux 编程中的API函数和系统调用的关系【转】
转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...
最新文章
- php转java知乎_php程序员来谈谈php和java
- UltraEdit中高亮显示verilog HDL关键词
- 毕设题目:Matlab机器人路径规划
- WPF 做的天干地支 乾坤八卦 罗盘
- did拼接屏最小拼缝0.88mm
- 斯坦福课程Knowledge Graphs-What is a Knowledge Graph?
- arm怎么运行python_给arm板编译移植python(一)
- lintcode 输出赛程表
- 快速识别台式机的内存条
- endcap和welltap_ICC布局规划
- 第一期:[开眼界] Android P预览版都有哪些设计新鲜事
- 大数据技术原理与应用之【云数据库】习题
- Excel中将人民币金额小写转成大写(转)
- C语言没学好,C++听不懂,怎么办?
- linux卸载informatica,Informatica在linux下安装搭建
- 【击穿、穿透、雪崩】
- jupyter安装php,如何安装jupyter
- cocos2d-x 使用位图工具BMFont自定义字体 fnt
- 机器学习强基计划2-2:一文详解ID3、C4.5、CART决策树算法+ Python实现
- 前景提取 matlab,基于MATLAB的动态前景目标特征提取与运动跟踪
热门文章
- 数据结构 - 二叉树的遍历
- java左侧栏怎么打开_eclipse左侧项目栏不见了怎么解决
- strongswan简单介绍
- 复制文件或文件夹时出错---未指定的错误
- 好程序员云计算培训分享2020年云计算的发展趋势
- 腾讯视频web端如何去水印?学会这招你想去啥就去啥
- Qt编写物联网管理平台46-云端数据同步
- Ubuntu18.04使用Systemback制作系统镜像并还原(亲测)
- 出现AttributeError: module ‘selenium.webdriver‘ has no attribute ‘PhantomJS异常的解决方法
- 锁定文件失败,打不开磁盘或它所依赖的某个快照磁盘