static inline void sleep(unsigned sec)
{current->state = TASK_INTERRUPTIBLE;schedule_timeout(sec * HZ);
}

sleep,msleep,ssleep都是一开睡眠延时的方式来实现的,这种方式不占用cpu资源,他会使线程可以继续被调度
udelay,ndelay,mdelay,他们的实现都是一种忙等待。让cpu进行一定次数的循环,忙等待会占用cpu资源,delay的线程不会被调度
内核中最好不要使用mdelay().这会无谓的消耗cpu资源。udelay,ndelay只是为了在机制上配合硬件的短暂延时
之前的认识更正:
但是sleep()是会受到cpu的调度影响的,cpu很忙的时候sleep是很不准确的,比如msleep(10)。结果肯能会导致20-40ms的延时,sleep是一个很不精确的操作
但是dealy()却可以相对精确的延时,它霸占cpu不受调度的影响。所以,delay可以用,但是不要使用在频繁被调度的线程中,例如while(1)中,
他会不断调用delay(),这会使cpu的负载加大,导致性能降低。

在内核线程中一定要使用 msleep_interruptible( ) 来进行睡眠释放cpu,尽量不要使用msleep( )是毫秒级的不要微秒级的。
函数 延时单位 返回值 是否可被信号中断
msleep 毫秒 无 否 msleep_interruptible 毫秒 未完成的毫秒数 是

最主要的区别就是msleep会保证所需的延时一定会被执行完,而msleep_interruptible则可以在延时进行到一半时被信号打断而退出延时,剩余的延时数则通过返回值返回。两个函数最终的代码都会到达schedule_timeout函数
sleep的使用场景:
一般在内核线程中,最好使用一个可中断的msleep_interruptible(2),最好2ms以上。因为线程的调度节拍由HZ来决定,这个可以配置,一般为1000,即1ms。,所以sleep 1ms 会让cpu切换很吃力,
所以最好出让cpu 2ms 以上

Sleep与delay相关推荐

  1. 硬件delay评估表

    硬件delay评估表 硬件延时评估表用于快速评估一个模型在特定硬件环境和推理引擎上的推理速度. Bw 主要用于定义PaddleSlim支持的硬件延时评估表的格式. 概述 硬件延时评估表中存放着所有可能 ...

  2. c语言中delay找不到标识符,51单片机的c语言,请问哪里错了?延时没有效果,但是编译又不报错。delay应该怎么写,怎么引用啊?...

    最佳答案 西岸风 2019-01-07 15:15 i++) { LED0=0; LED2=1; LED4=0; delay(5000); } void main(void) { while(1) { ...

  3. SILK 的 Delay Decision 和 Dither

    SILK里面用了Delay Decision算法提高MOS分,让Noise Quant更准确.我起初认为Dither在每个DD里都会更新,这个Dither虽然会传递给解码器,但是很难保持解码和编码内自 ...

  4. 重新启动正在运行的linux,下面哪个命令行可用来马上重新启动正在运行的Linux系统()。A.restart--delay=0B.reboot-wC.halt-p...

    下面哪个命令行可用来马上重新启动正在运行的Linux系统().A.restart--delay=0B.reboot-wC.halt-p 更多相关问题 Java语言中的逻辑与( 切换开关设计用手指切换时 ...

  5. RxJava/RxAndroid:timer(long delay, TimeUnit unit)

    RxJava/RxAndroid:timer(long delay, TimeUnit unit) timer起到定时器的作用,本例使用timer延迟3秒执行一个输出任务: package com.e ...

  6. FPGA In/Out Delay Timing Constaint

    先简单说说这段时间遇到的问题.FPGA采集前端scaler的视频数据.像素时钟(随路时钟),视频数据,行场同步,DE.这些信号进入FPGA后.通过CSC(颜色空间转换).输出后的图像有噪点.通过查看时 ...

  7. 22.调用delay()方法延时执行动画效果

    delay()方法的功能是设置一个延时值来推迟动画效果的执行,它的调用格式为: $(selector).delay(duration) 其中参数duration为延时值,它的单位是毫秒,当超过延时值时 ...

  8. 【 Vivado 】输出延迟约束(Constraining Ouput Delay)

    FPGA内部时序单元到输出端口的路径也需要约束其output delay,如图1所示框图. 图1        约束output delay的命令是set_output_delay,具体的参数如下: ...

  9. 【 Vivado 】输入延迟约束(Constraining Input Delay)

    前几篇博文提到了四种时序路径:基本的时序约束.分析的概念 1)      FPGA内部时序单元间的路径 2)      输入端口到FPGA内部时序单元的路径 3)      FPGA内部时序单元到输出 ...

  10. CSS transition delay简介与进阶应用

    背景 在日常的项目开发中,我们会很经常的遇见如下的需求: 在浏览器页面中,当鼠标移动到某个部分后,另一个部分在延迟若干时间后出现 在鼠标移除该区域后,另一部分也在延迟若干时间后消失 我相信这是一个很常 ...

最新文章

  1. linux安装深度软件商店,Deepin系统中的深度商店V5.1发布,基于Debian的Linux可安装...
  2. 【STM32】GPIO之蜂鸣器
  3. 查找域内所有的Windows Server 2012 R2的服务器,并区分出哪些是物理机,那些是虚拟机...
  4. 【转】Windows版本,OS内核版本,Windows SDK之间的关系
  5. MySQL - 创建存储过程Procedure,Do While实现循环
  6. oracle无法分区,oracle已存在的表添加新分区的方法
  7. 腾讯视频下载下来的视频在哪里
  8. java线程等待_java 中线程等待与通知的实现
  9. Java-note-调试小技巧
  10. POJ NOI MATH-7832 最接近的分数
  11. 关于python注释下面选项描述错误的是_关于Python的列表,以下选项中描述错误的是______...
  12. amazeui学习笔记--js插件(UI增强)--警告框Alert
  13. redis命令之哈希表类型lpush命令用法详情
  14. AD中如何进行logo的自制与导入
  15. vue中audio实现微信语音播放动画
  16. 交叉编译ortp、osip2、eXosip2、mediastreamer2及其附带的库实现SIP软电话
  17. [物联网文章之其四] 在物联网中应用机器学习:使用 Android Things 与 TensorFlow
  18. 实时弹幕系统的设计与实现
  19. IBM放弃SoftLayer品牌 将其归入Bluemix之中
  20. python动态表情包_Python从eif中导出qq表情的gif图片

热门文章

  1. 热心肠:关于肠道菌群和益生菌的10个观点
  2. iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析
  3. android二维码开源项目zxing编译 命令行编译
  4. 综述 | 少量标注数据下的命名实体识别研究
  5. 2022年南京市市级农业产业化联合体申报及绩效评价申报程序条件
  6. 微信小程序开发--添加照片水印(canvas )
  7. java练习:金额转换,阿拉伯数字转换成中文传统形式
  8. 关于进程访问令牌( access token ) 及 OpenProcessToken
  9. 学习使我快乐学习使我升华只要你爱学习我们就是一辈子的好朋友
  10. html百分比单位,百分比 |