加入收藏 | 设为首页 | 会员中心 | 我要投稿 烟台站长网 (https://www.0535zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux中usleep和sleep的作用和使用存在什么区别

发布时间:2023-09-19 10:35:53 所属栏目:Linux 来源:未知
导读:   linux中usleep和sleep有什么区别



  (1)sleep()-------以秒为单位



  头文件:



   #include <windows.h> // 在VC中使用带上头文件



   #include
  linux中usleep和sleep有什么区别
 
  (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时间
 

(编辑:烟台站长网)

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

    推荐文章