加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux中usleep和sleep的功能和使用存在什么差异

发布时间:2023-05-27 14:25:44 所属栏目:Linux 来源:
导读:在这篇文章中,我们来学习一下“linux中usleep和sleep的功能和使用存在什么区别”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一
在这篇文章中,我们来学习一下“linux中usleep和sleep的功能和使用存在什么区别”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。
 
linux中usleep和sleep的区别:sleep函数用于执行挂起指定的秒数,而usleep功能是执行挂起指定的微秒数。sleep是非系统调用,在库函数中实现,是通过alarm()来设定报警时间的,usleep除了时间单位为微秒以外,在使用上与sleep差不多。
 
本教程操作环境:linux7.3系统、Dell G3电脑。
 
(1)sleep()-------以秒为单位
 
头文件:
 
 #include <windows.h> // 在VC中使用带上头文件
 
        #include <unistd.h>  // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
 
功 能: 执行挂起指定的秒数
 
语 法:
 
unsigned int sleep(unsigned int seconds);
 
sleep()非系统调用,sleep()是在库函数中实现的,它是通过alarm()来设定报警时间,使用sigsuspend()将进程挂起在信号SIGALARM上。
 
sleep()只能精确到秒级上。sleep()会令目前的进程暂停,直到达到参数seconds 所指定的时间,或是被信号所中断。
 
#include<unistd.h>
 
return:若进程暂停到参数seconds 所指定的时间,成功则返回0,若有信号中断则返回剩余秒数。
 
示例:
 
 #include <windows.h>
 
 #include<stdio.h>
 
 int main()
 
 {
 
  int a;
 
  a=1;
 
  printf("hello");
 
  sleep(a);        /* VC 使用Sleep*/
 
  printf("world");
 
  return 0;
 
 }
 
(2)usleep()----以微秒为单位
 
头文件:
 
#include <unistd.h>
 
功 能: usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒);
 
语 法:
 
void usleep(int micro_seconds);
 
除了时间单位为微秒以外,在使用上与sleep()差不多。还有就是实现也是不同的,sleep因为是用alarm实现的,所以时间单位为s ,而usleep的时间单位为us
 
,那肯定不是由alarm实现的,所以说它们的实现不同,但都是linux用的,而window下不能用,因为都是sleep和usleep都是在unistd.h下定义的。
 
#include<unistd.h>
 
return:若进程暂停到参数seconds 所指定的时间,成功则返回0,若有信号中断则返回剩余微秒数。
 
返回值: 无
 
内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微秒数(us)。
 
注 意:
 
这个函数不能工作在windows 操作系统中。用在Linux的测试环境下面。
 
参 见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
 
是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
 
如果延迟时间为几十毫秒(1ms = 1000us),或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!