三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数
三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数
(1)sleep()-------以秒为单位
unsigned int sleep(unsigned int seconds);
sleep()非系统调用,sleep()是在库函数中实现的,它是通过alarm()来设定报警时间,使用sigsuspend()将进程挂起在信号SIGALARM上。
sleep()只能精确到秒级上。sleep()会令目前的进程暂停,直到达到参数seconds 所指定的时间,或是被信号所中断。
#include<unistd.h>
return:若进程暂停到参数seconds 所指定的时间,成功则返回0,若有信号中断则返回剩余秒数。
(2)usleep()----以微秒为单位
unsigned int usleep(unsigned int useconds);
除了时间单位为微秒以外,在使用上与sleep()差不多。还有就是实现也是不同的,sleep因为是用alarm实现的,所以时间单位为s ,而usleep的时间单位为us
,那肯定不是由alarm实现的,所以说它们的实现不同,但都是linux用的,而window下不能用,因为都是sleep和usleep都是在unistd.h下定义的。
#include<unistd.h>
return:若进程暂停到参数seconds 所指定的时间,成功则返回0,若有信号中断则返回剩余微秒数。
(3)nanosleep( )---------以纳秒为单位
struct timespec
{
time_t tv_sec; /* 秒seconds */
long tv_nsec; /* 纳秒nanoseconds */
};
int nanosleep(const struct timespec *req, struct timespec *rem);
#include<time.h>
这个函数功能是暂停某个进程直到你规定的时间后恢复,参数req就是你要暂停的时间,其中req->tv_sec是以秒为单位,而tv_nsec以毫微秒为单位(10的-9次方秒)。由于调用nanosleep是是进程进入TASK_INTERRUPTIBLE,这种状态是会相应信号而进入TASK_RUNNING状态的,这就意味着有可能会没有等到你规定的时间就因为其它信号而唤醒,此时函数返回-1,切还剩余的时间会被记录在rem中。
return: 若进程暂停到参数*req所指定的时间,成功则返回0,若有信号中断则返回-1,并且将剩余微秒数记录在*rem中。
注意:unistd.h 是 unix 系统标准头文件,用于系统调用,相当于win32中的windows.h,unistd.h 定义的函数只能用于UNIX环境中,而不能用于windows。所以sleep 和 usleep 只能用于linux下,而不能用于windows 。
nalosleep 和 其它时间日期操作函数一样都是定义在time.h中的,所以都适用
三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数相关推荐
- 虚拟机linux和主机网络连接,linux虚拟机中和主机三种网络连接方式的区别
linux虚拟机中和主机三种网络连接方式的区别 在介绍网络模式之前,关于网络的几个简单命令的使用 ifup eth0 //启动网卡eth0 ifdown eth0 //关闭网卡eth0 /etc/ne ...
- Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?(好)
修改 Windows 记事本的 ANSI.Unicode.UTF-8 这三种编码模式有什么区别?修改 Windows 的记事本默认存储文本文档编码是 ANSI,想问一下为了最大跨平台兼容性,应该采用哪 ...
- 了解mysql的三种不同安装方式的区别
学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...
- SpringCloud feign 的三种超时时间配置
1.负载均衡 Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,就会相应的报错.Feign 的负载均衡底层用的是 Ribbon,其配置如下: ribbon:ReadT ...
- Iass、Pass、Sass三种云服务有什么区别
Iass.Pass.Sass三种云服务有什么区别: 1.第一层叫做IaaS : Infrastructure-as-a-Service(基础设施即服务) ...
- 一图读懂DV、OV、EV三种SSL证书之间的区别
目前很多浏览器都开始信任https访问,也就意味着网站需要安装SSL证书才能得到浏览器的信任.SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器 ...
- 了解lammps中NVE/NVT/NPT三种系综的特性和区别
了解lammps中NVE/NVT/NPT三种系综的特性和区别: 系综是lammps模拟中的一个重要环节,系综种类及对应参数选择的直接决定了模拟结果程度的好坏.然而,由于各种体系.特定条件.系综种类和参 ...
- Spring创建Bean的三种方式的使用和区别
在学习Spring的时候,发现Spring的IOC(控制反转)为我们提供的三种创建Bean的方式. 1.Spring创建Bean的三种方式 这里采用XML配置,分别演示三种创建Bean的方式和代码. ...
- 独家 | 将时间信息编码用于机器学习模型的三种编码时间信息作为特征的三种方法...
作者:Eryk Lewinson 翻译:汪桉旭 校对:zrx本文约4400字,建议阅读5分钟 本文研究了三种使用日期相关的信息如何创造有意义特征的方法. 标签:时间帧,机器学习,Python,技术演示 ...
最新文章
- FFmpeg被声明为已否决的解决方案
- python3 判断ip有效性 是否是内网ip
- 线性方程组与基尔霍夫定律
- html 启动bat脚本,Windows开机自启动bat脚本设置方法
- 记-php连接mssql遇上的问题
- 修改可选项文件实现自动连接数据库服务器
- J2EE中在web.xml异常页面跳转
- 用matlab交互式的选取图像特定区域数据
- ceph13 快速编译 v13.2.4 --2019_8
- linux docker导入镜像,Docker镜像的导入和导出
- shiro的集群动态权限更新
- 【算法分析与设计】证明插入排序的正确性
- select、poll和epoll
- dbForge mysql数据库比对
- iPhone手机更换自定义铃声
- poj_3468 伸展树
- Mac上的python的数据分析与挖掘学习之路(一)
- C++多线程/互斥锁/条件变量/信号量思维很重要;设计线程安全队列;1114按序打印;1115交替打印FooBar;1116打印零与奇偶数;1117H2O 生成1195交替打印字符串1226哲学家进餐
- JavaScript设计模式(2)—— 多种继承方式的实现及原理
- 1000款水墨墨迹毛笔素材