位置: 编程技术 - 正文

linux下nanosleep() & sleep()的区别

编辑:rootadmin

推荐整理分享linux下nanosleep() & sleep()的区别,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

用户程序中的睡眠:

sleep() usleep() nanosleep()

sleep()和nanosleep()都是使进程睡眠一段时间后被唤醒,但是二者的实现完全不同。Linux中并没有提供系统调用sleep(),sleep()是在库函数中实现的,它是通过调用alarm()来设定报警时间,调用sigsuspend()将进程挂起在信号SIGALARM上,sleep()只能精确到秒级上。

linux下nanosleep() & sleep()的区别

nanosleep()则是Linux中的系统调用,它是使用定时器来实现的,该调用使调用进程睡眠,并往定时器队列上加入一个timer_list型定时器,time_list结构里包括唤醒时间以及唤醒后执行的函数,通过nanosleep()加入的定时器的执行函数仅仅完成唤醒当前进程的功能。系统通过一定的机制定时检查这些队列(比如通过系统调用陷入核心后,从核心返回用户态前,要检查当前进程的时间片是否已经耗尽,如果是则调用schedule()函数重新调度,该函数中就会检查定时器队列,另外慢中断返回前也会做此检查),如果定时时间已超过,则执行定时器指定的函数唤醒调用进程。当然,由于系统时间片可能丢失,所以nanosleep()精度也不是很高。

alarm()也是通过定时器实现的,但是其精度只精确到秒级,另外,它设置的定时器执行函数是在指定时间向当前进程发送SIGALRM信号。

复制代码代码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/time.h>#include <sched.h>#define COUNT #define MILLION L</p><p>int main(void){ int i; struct timespec slptm; long tdif; struct timeval tend, tstart;</p><p> slptm.tv_sec = 0; slptm.tv_nsec = ; // ns = 1 us</p><p> //struct sched_param param; //param.sched_priority = 0; //sched_setscheduler(getpid(), SCHED_FIFO, &param);</p><p> if (gettimeofday(&tstart, NULL) == -1) { fprintf(stderr, "Failed to get start timen"); return 1; } for (i = 0; i < COUNT; i++) { if (nanosleep(&slptm, NULL) == -1) { perror("Failed to nanosleep"); return 1; } } if (gettimeofday(&tend, NULL) == -1) { fprintf(stderr, "Failed to get end timen"); return 1; } tdif = MILLION * (tend.tv_sec - tstart.tv_sec) + (tend.tv_usec - tstart.tv_usec); printf("nanosleep() time is %ld usn", tdif/COUNT); return 0;}

HZ HZ时钟中断的时间间隔: 4 ms (ms/)----------------------------------------nanosleep() time is us (4. ms)说明nanosleep的睡眠定时器依赖于时钟中断

HZ HZ时钟中断的时间间隔: 1 ms----------------------------------------nanosleep() time is us注: 最小睡眠时间为1 us

查看ubuntu系统资源占用命令大全 查看ubuntu的资源占用的命令为$:toptop命令可以查看内存,cpu和进程top:主要参数d:指定更新的间隔,以秒计算。q:没有任何延迟的更新。如果使用者有

LINUX vim替换字符串指令 vi/vim中可以使用:s命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi真是强大啊,还有很多需要学习),记录

ubuntu系统查找命令大全、ubuntu查找命令详解 一.以文件名查找:1.find命令find/-namefilename目的:在根目录/开始搜被称为filename的文件,filename文件名可以包含通配符(*,?),注意:filename是文件名

标签: linux下nanosleep() & sleep()的区别

本文链接地址:https://www.jiuchutong.com/biancheng/359019.html 转载请保留说明!

上一篇:PHP time_nanosleep() 函数使用介绍

下一篇:查看ubuntu系统资源占用命令大全 (如何查看ubuntu系统版本)

  • 高新企业收到政府补贴会计分录
  • 上月未计提税金,下月怎么做分录
  • 暂估含税还是不含税
  • 企业购进材料的会计分录
  • 住宿费进项发票账务处理
  • 通用机打发票单位名称打不下怎么办
  • 价内税与价外税的计算公式
  • 专票红冲后的账务处理
  • 普通发票离线限额为0
  • 资管产品增值税征收管理规定
  • 第一季度利润表本月数
  • 房屋修缮费交增值税吗
  • 政府补贴冲减资产原值
  • 携程只有电子发票吗
  • 应交税费已交税金借方有余额
  • 信托保证本金吗
  • 企业所得税汇算清缴扣除比例
  • 个税申报已经扣了怎么办
  • 吸甲醛最好的植物是什么?
  • 承兑兑现违法吗
  • 增值税明细账怎么登记
  • 补缴配套费
  • 听证方式有几种
  • 跨年度冲减收入
  • 在国内和国外
  • 销售费用税前扣除吗
  • 苹果电脑字体文件怎么拖出来
  • 强烈的建议
  • php教程全集
  • 什么是包装物押运
  • 记账软件的作用
  • iis 7下安装laravel 5.4环境的方法教程
  • 注册教育培训机构需要哪些手续
  • 免交的增值税要交所得税吗
  • php中的表达式简写是什么
  • vue3项目实战
  • 增值税密码锁定怎么办
  • chatto
  • resize2fs命令 同步文件系统容量到内核
  • phpcms怎么样
  • 企业年报经营状态
  • 进口消费税如何计税
  • 差旅费报销有哪些
  • opengl开发图形界面
  • phpcms怎么用
  • 咨询公司小规模纳税人企业所得税核定征收
  • 个人发票需要什么抬头
  • 个体工商户生产经营税
  • 递延所得税资产是什么意思
  • 如何让主营业务成本增加
  • 运费发票没到可以先计提吗
  • 以长期股权投资换入存货
  • 会计中劳保用品是什么
  • 港币转人民币差多少钱
  • 预付账款收到发票
  • 研发支出怎么结转到管理费用
  • 差旅费抵扣政策内容
  • 租用写字楼水电怎么收费
  • 项目预验收包括以下哪些内容
  • 案例分析应收账款管理存在的问题
  • 设备上的配件计入什么费用
  • 哪些企业执行新的租赁政策
  • 认缴制下实收资本印花税
  • 财务费用包括哪几项
  • win10系统设置快捷键
  • xp系统怎么打开设置
  • 使用u盘安装win10
  • linuxvim编辑器的用法
  • npfmntor.exe - npfmntor是什么进程 有什么用
  • win7 来宾账户
  • win10 提示
  • cocos2dx 地图
  • BootStrap TreeView使用实例详解
  • python rem
  • 输出语句的执行过程
  • shell脚本定时任务怎么写
  • 江苏省国家税务局总局官网
  • 税务局不动产交易缴税方案
  • 发票明细导入excel
  • 杭州残保金2021年新政策申报时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设